无法使我的Tomcat使用端口443(https)连接

时间:2019-08-08 13:26:43

标签: ssl tomcat https openssl ssl-certificate

在过去的两天里,我一直在尝试做一件事,能够以www.gestao.com.br的身份访问我的Web应用程序(localhost:8080 / evop),并在我的Web服务器上启用https,以便{ {3}}也可以。


摘要

我需要一个本地主机Web应用程序,在其URL前面显示https(而不是红色的https)。

PS:使用Tomcat作为Web服务器以及Windows和主机OS。


说明

我们在每个客户端上都安装了Tomcat,以便他们可以在其公司本地运行我们的Web应用程序,一段时间之后,我们开始收到一些抱怨,即即使它们在本地连接也不安全,所以为了取悦我们的客户,我们决定在本地的Tomcat服务器上启用SSL。

使用JDK随附的keytool可以很容易地在服务器上启用https,但是由于自签名,https横穿了读取行。此时,我知道需要一个CA来对证书进行签名,但是由于这都是在本地完成的,并且没有购买任何真实域,因此无法使用像LetsEncrypt这样的CA。

背景故事足够多了,基本上我在Windows 10计算机上有一台Tomcat服务器,并且它需要具有签名的SSL证书,因此该服务器上托管的应用程序的网址前带有 https(不是越过https)


我做了什么

为此,我发现我必须成为自己的CA。这是我的步骤:

1。只能使用本地域www.gestao.com.br

访问我的Web应用
  • 我的网络应用程序网址为localhost:8080/evop;但是,我通过在文件末尾添加C:\Windows\System32\drivers\etc\hosts来更改127.0.0.1 www.gestao.com.br,因此可以使用www.gestao.com.br:8080/evop
  • 来访问它。
  • 我通过在Tomcat conf文件夹上编辑server.xml并添加以下内容来解决URL问题中的端口:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" />
  • 因此,我可以使用www.gestao.com.br/evop
  • 进行访问
  • 最后一步是将Tomcat的webapps文件夹中名为evop的文件夹更改为ROOT,然后我可以用wwww.gestao.com.br加载我的应用程序

2。成为我自己的CA

  • 使用以下方法创建私钥:
openssl genrsa -des3 -out rootSSL.key 2048
  • 创建了根证书文件:
openssl req -x509 -new -nodes -key rootSSL.key -sha256 -days 1024 -out rootSSL.pem
  • 将我新创建的根证书添加到Microsoft管理控制台(MMC),以便Windows知道它可以信任由我签名的证书。

3。为我自己的应用程序创建并签名证书

  • 使用以下方法为新的本地域创建私钥:
openssl req -new -sha256 -nodes -out gestao.csr -newkey rsa:2048 -keyout gestao.key -subj "/C=BR/ST=MS/L=Campo Grande/O=Evop/OU=Dev/CN=www.gestao.com.br/emailAddress=dev@evop.com.br"
  • 使用以下证书颁发证书:
openssl x509 -req -in gestao.csr -CA rootSSL.pem -CAkey rootSSL.key -CAcreateserial -out gestao.crt -days 500 -sha256 -extensions "authorityKeyIdentifier=keyid,issuer\n basicConstraints=CA:FALSE\n keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\n  subjectAltName=DNS:www.gestao.com.br"

4。配置Tomcat以使用证书

  • 我尝试了两种方法,首先,我在Tomcat conf文件夹上打开了一个Powershell,以使用rootSSL.pem通过JDK的keytool通过以下方式创建密钥库:
keytool -import -alias root -keystore tomcat.jks -trustcacerts -file rootSSL.pem
  • 然后,我还使用以下方式添加了本地域证书:
keytool -import -alias tomcat -keystore tomcat.jks -file gestao.crt
  • 之后,我在server.xml上配置了连接器,如下所示:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="HTTP/1.1" maxThreads="150" SSLEnabled="true" compression="on" scheme="https" secure="true" keystoreFile="conf/tomcat.jks" keyAlias="tomcat" keystorePass="password" clientAuth="false" SSLVerifyClient="none" sslProtocol="TLSv1.2" />
  • 但是我只能使用8080端口访问Tomcat,如果尝试使用443端口访问Tomcat,则会出现连接被拒绝的错误。
  • 第二,我尝试不使用keytool,而是直接将本地域证书和密钥设置到存储区中,如下所示:
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
 maxThreads="150" SSLEnabled="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/gestao.key" certificateFile="conf/gestao.crt" type="RSA" />
    </SSLHostConfig>
</Connector>
  • 但是,那也不允许我使用443端口进行连接。

参考

  

0 个答案:

没有答案