https 流程及其配置方式

参考教程: Apache Tomcat 7 SSL/TLS Configuration HOW-TO
html

1.首先须要了解下看看https运行流程:

(1):客户端(浏览器)发送https请求到服务器web

(2):服务器有私钥和公约算法

(3):服务器返回公钥给客户端shell

(4):客户端经过系统根证书机构验证公钥是否有效,验证公钥、时间、机构等信息apache

(5):客户端验证成功后生成必定长度的随机数(如2048位),而后使用公钥经过证书支持的算法与随机数加密而后发送给服务器windows

(6):服务器接受到加密数据口经过私钥解密而后取得随机数浏览器

(7):而后使用随机数经过证书支持的算法(如:RSA)把内容加密而后响应给客户端tomcat

(8):客户端使用随机数解密内容。服务器


整个https数据交互中涉及到公钥,私钥app

2.生成密钥对:

keytool -genkeypair -alias testdomain -keyalg RSA -keysize 2048 -validity 3650 -keystore e:\\testdomain.keystore

其中名字和姓氏是本身的域名,其余的任意。

生成了之后就在e:\\盘能看到testdomain.keystore 文件了

3.配置tomcat https:

打开%TOMCAT_HOME%/conf/server.xml

<Connector
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="443" 
           maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="e:\\testdomain.keystore" keystorePass="123456"
           clientAuth="false" sslProtocol="TLS"/>

keystoreFile:是密钥对的路径,keystorePass:是配置密钥对时候的密钥口令。

而后保存启动tomcat。在浏览器中输入:https://test.domain.com  由于我在c:/windows/system32/drivers/etc/hosts中配置了 :127.0.0.1 test.domain.com  因此我访问它也就至关于访问本地服务器了。

打开浏览器的结果页面: (若是打不开该页面,或者打开后不正常 用netstat -ano |findstr "443" 这条命令查询443端口是否被占用,或者把端口改为其余的或默认8443.若是端口是非443则访问的时候须要单独输入端口号)

由于还未生成证书,因此浏览器(操做系统)不信任当前https连接则出现当前页面。

若是已有证书 (跳过4,5步骤)导入证书到keystore中

keytool -import -alias tomcat -keystore <your_keystore_filename>    -file <your_certificate_filename>

4.接下来生成证书:

keytool -exportcert -alias testdomain -keystore e:\\testdomain.keystore -file e:\\testdomain.cer

-exportcert命令详解

导出证书后,就能在e盘看到testdomain.cer文件了。

5.安装证书让操做系统信任该证书

双击打开证书:

点击安装证书


选择当前或本地计算机,而后下一步

选择第二个:将全部的证书都放入下列存储,而后点击浏览。



而后下一步与完成

这儿选择是


6.而后关闭浏览器从新打开

如今就能看到https已经受信任了。


7.配置默认使用https:

在%TOMCAT_HOME%/conf/web.xml  webapp标签里面 最后添加如下代码

<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>
相关文章
相关标签/搜索