第一步:生成证书

我这里即为服务端又为客户端,所以我生成了五个文件;

1、生成服务器证书库

2、生成客户端证书库

3、从客户端证书库中导出客户端证书

4、从服务器证书库中导出服务器证书

5、生成客户端信任证书库(由服务器证书生成的证书库)

这些证书是由jdk的keytool来生成的,可以参考以下**生成脚本,根据实际情况做必要的修改,注意:服务端的**库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意。

1、生成服务器证书库

 keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore E:\ssl\server.keystore -dname" CN=127.0.0.1,OU=bmsoft,O=bmsoft,L=bm,ST=Beijing,c=sh" -storepass 123456

2生成客户端证书库

 keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore E:\ssl\client.p12 -dname"CN=client,OU=bmsoft,O=bmsoft,L=bm,ST=Beijing,c=sh" -storepass 123456 -keypass 123456

3从客户端证书库中导出客户端证书

 keytool -export -v -alias client -keystore E:\ssl\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:\ssl\client.cer
 

4从服务器证书库中导出服务器证书

 keytool -export -v -alias server -keystore E:\ssl\server.keystore -storepass 123456 -rfc -file E:\ssl\server.cer
 

5生成客户端信任证书库(由服务器证书生成的证书库)

 keytool -import -v -alias server -file E:\ssl\server.cer -keystore E:\ssl\client.truststore -storepass 123456

这五步好了后,到指定的文件夹中查看是否有这五个文件

配置tomcat http转为https

下面是最重要的一步:

配置tomcat http转为https将客户端证书导入到服务器证书库(使得服务器信任客户端证书)

配置tomcat http转为httpskeytool -import -v -alias client -file E:\ssl\client.cer -keystore E:\ssl\server.keystore -storepass 123456

 

第二步:配置web.xml文件

打开应用的web.xml文件,增加配置如下:

<!-- 强制SSL配置,即普通的请求也会重定向为SSL请求 -->  

<!--    CONFIDENTIAL: 要保证服务器和客户端之间传输的数据不能够被修改,且不能被第三方查看到
            INTEGRAL: 要保证服务器和client之间传输的数据不能够被修改
            NONE: 指示容器必须能够在任一的连接上提供数据。(即用HTTP或HTTPS,由客户端来决定) -->
   <security-constraint>
        <web-resource-collection>
            <web-resource-name>SSL</web-resource-name>
            <url-pattern>/*</url-pattern><!-- 全站使用SSL -->
        </web-resource-collection>
        <user-data-constraint>
            <description>SSL required</description>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

 

第三步:配置Tomcat服务器

打开server.xml找到port=“8443”

<!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

去掉注释,将内容改为下面的,其中,请注意:keystoreFiletruststoreFile的路径一定要写对,就是你配生成证书的路径,两具一样即可!

<Connector SSLEnabled="true" acceptCount="100" clientAuth="true" disableUploadTimeout="true" enableLookups="false" keystoreFile="E:/ssl/server.keystore" keystorePass="123456" maxThreads="25" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" truststoreFile="E:/ssl/server.keystore" truststorePass="123456"/>

 第四步:然后导入服务端信任证书

谷歌里边的  设置  ,搜索 证书,点击管理证书

点击导入->下一步,如图:

配置tomcat http转为https

浏览自己存放的地址找到server.cer文件,然后点击下一步,如图:

配置tomcat http转为https

选择如下图->下一步

配置tomcat http转为https

按照如下图->完成

配置tomcat http转为https

弹出警告框->

配置tomcat http转为https
 

弹出下框,代表服务器导入成功

 

配置tomcat http转为https

然后查看是否存在,如图:

配置tomcat http转为https

3、找到存放的路径双击“client.p12”,将服务端给客户端颁发的证书导入到浏览器中。

双击后->下一步

配置tomcat http转为https

找到存放的路径->下一步

配置tomcat http转为https

输入生成**时的密码:123456 -> 下一步

配置tomcat http转为https

按照如下图 -> 下一步

配置tomcat http转为https

按照如下图 -> 下一步

配置tomcat http转为https

完成

配置tomcat http转为https

此时输入http://127.0.0.1:8080/lms/login/login时,会弹出安全证书,点击确认按钮,即可访问,且地址是发生改变,如图:

 

就可以看到地址发生了变化

相关文章: