记一次Windows下tomcat安装SSL证书及配置HTTPS

首先找到 java 安装目录
我本地的安装路径为: C:\eclipse\pleiades\java\8\bin

CMD 进入 JDK 安装目录

cd C:\eclipse\pleiades\java\8\bin

使用 jdk 自带 keytool.exe 生成 ssl 证书

注:以下目录是我自己建的,在使用时修改为自己所创建的目录

1、生成服务器证书

    keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:/ssl/tomcat.keystore -validity 365


    参数说明:
    genkey生成方式,对称或者非对称
    -alias tomcat(别名)
    -keyalg RSA(算法)
    -keysize 1024(密钥长度)
    -validity 365(有效期,天单位)
    -keystore C:/keys1/tomcat.keystore(指定生成证书的位置和证书名称)

_注:以上的 keystore 密码建议设置成一致,避免混乱。这里设置测试密码为 p@ssw0rd。输入密码后,提示输入名字与姓氏,这里输入浏览器访问域名。其他项直接回车跳过即可。C:/ssl/ 目录需要提前手动创建好,否则会生成失败_

2、生成客户端证书:

keytool -genkey -v -alias clientkey -keyalg RSA -storetype PKCS12 -keystore c:/ssl/clientkey.p12

3、这里服务端跟客户端生成完证书,双向需要认证。首先,让服务器信任客户端证书:

keytool -export -alias clientkey -keystore c:/ssl/clientkey.p12 -storetype PKCS12 -storepass p@ssw0rd -rfc -file c:/ssl/clientkey.cer

4、将客户端证书导入服务器证书库。(服务器信任客户端证书)

keytool -import -v -file c:/ssl/clientkey.cer -keystore c:/ssl/tomcat.keystore

5、客户端信任服务器证书:

keytool -keystore c:/ssl/tomcat.keystore -export -alias tomcat -file c:/ssl/tomcat.cer

在最后完成了窗口提示我用以下命令将证书转换为 pkcs12 加密

keytool -importkeystore -srckeystore C:/ssl/tomcat.keystore -destkeystore C:/ssl/tomcat.keystore -deststoretype pkcs12

6.双击 tomcat.cer–>安装证书–>证书存储选择“受信任的根证书颁发机构”–>后面根据提示安装即可

记一次Windows下tomcat安装SSL证书及配置HTTPS

7、配置 tomcat 种 server.xml 中 443 端口。观察 tomcat 中端口配置:

这里有配置 redirectPort="443" 。猜测这里如果添加了 SSL/TLS 证书后,利用 http 协议 80 端口访问将自动重定向到 443 端口。所以这里修改 443 为 TLS 认证协议:

    <Connector port="80" protocol="HTTP/1.1"
               maxParameterCount="-1"
               connectionTimeout="20000"
               redirectPort="443"
               />

   <Connector port="443"
          protocol="org.apache.coyote.http11.Http11NioProtocol"
          maxThreads="150"
          SSLEnabled="true"
          scheme="https"
          secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\ssl\tomcat.keystore" keystorePass="p@ssw0rd"
          truststoreFile="C:\ssl\tomcat.keystore" truststorePass="p@ssw0rd"
          ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"/>

参数说明:keystoreFile 证书路径。keystorePass 设置证书密码。ciphers 设置这个参数,避免 chrome 浏览器由于安全机制过滤,提示“

8、配置 tomcat 目录下的 web.xml,添加 ssl 认证,将 http 请求全部需要 ssl 认证:

<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

9.配置域名

http://www.xxxxx.cn本来就是可以访问的域名,但是此例中我们用它测试证书,所以不能让他访问真实的服务器,我们应该让他访问到本机,只有这样我们安装到本地JVM的证书才有效,方法如下:

打开 C:/Windows/System32/drivers/etc/hosts,拉到最下面添加:

127.0.0.1 www.xxxxx.cn

10.启动 tomcat

所有的配置都已完成,现在就让我们来启动 tomcat 吧。
输入:https://www.xxxxx.cn,会提示你该网站的安全证书不受信任,没错,这就是为什么让你到证书提供商购买的原因。

记一次Windows下tomcat安装SSL证书及配置HTTPS

上一篇:winfrom 报 索引 -1 没有值 的错误解决方案


下一篇:win10上面快捷方式如何放到桌面上