面向Tomcat Server的HTTPS安全套接层配置
序言
为服务器生成一个合法的证书
使用keytool为Tomcat生成证书。
使用命令:
keytool-genkey -v -alias tomcat -keyalg RSA -keystoreG:\学习资料\TomcatSecurityCertificate\ServerSecurity.keystore-validity 36500
l 证书的保存路径,其中,证书的文件名称为ServerSecurity.keystore
l
证书的有效期,36500表示证书的有效期时长为100年。默认为9天
要注意:
在填写“您的名字与姓氏是什么”的时候,如果是将此电脑做为本地服务器测试,则要填写IP地址或者本机(localhost)
此时会在刚才指定的路径下生成一个后缀名为keystore格式的证书文件。
为客户端生成一个合法的证书
使用keytool为Tomcat生成证书。
使用命令:
l
客户端证书的存放路径,其中文件名为ClientSecurity.p12
注意:
生成客户端证书后,双击安装后方可生效。
此时会在刚才指定的路径下生成一个后缀名为p12格式的证书文件。
使服务器信任客户端证书
由于此技术基于双向验证,所以要让服务器信任客户端证书,也需要让客户端信任服务器证书。满足这两个条件即可建立安全套接字层,使用多种加密技术保证在双方交互时的安全性。
使用命令:
keytool -export -alias mykey -keystore G:\学习资料\TomcatSecurityCertificate\ClientSecurity.p12-storetype PKCS12 -storepass123456 -rfc -file G:\学习资料\TomcatSecurityCertificate\ClientSecurity.cer
l p12格式的客户端证书文件路径,因为这种格式的证书不能直接导入,所以需要使用keytool将其转换为cer证书文件才可以直接双击导入到证书库中
l 原证书中设置的密码
l 生成cer新证书的输出路径
此时会在刚才指定的路径下生成一个转换后的以cer为后缀名的证书文件。
之后,需要将此证书导入到服务器的证书库
使用命令:
keytool -import -v -file G:\学习资料\TomcatSecurityCertificate\ClientSecurity.cer -keystoreG:\学习资料\TomcatSecurityCertificate\ServerSecurity.keystore
l 服务端cer格式的证书路径,添加到服务器证书库的源证书
l 服务器证书文件
此时已显示将此客户端证书添加到密钥库中。
使客户端信任服务器证书
此时需要把服务器证书添加到浏览的“受信任的根证书颁发机构”。但keystore格式的证书无法直接导入,则需要转换为cer文件。
使用命令:
keytool-keystore G:\学习资料\TomcatSecurityCertificate\ServerSecurity.keystore -export -alias tomcat -file G:\学习资料\TomcatSecurityCertificate\ServerSecurity.cer
l 格式为keystore的服务器证书文件
l 将keystore格式的服务器端证书文件转换的输出路径
此时会在刚才定义的输出路径下创建一个服务器端的cer格式的证书。
此时,双击此文件,安装到系统的“受信任的根证书颁发机构”中即可。
配置Tomcat Server服务器的HTTPS安全链接支持
在Tomcat根目录下的conf文件夹中,以文本方式编辑,在要访问的端口后根据以下代码进行属性的修改:
<Connectorprotocol="org.apache.coyote.http11.Http11NioProtocol"
port="8080"minSpareThreads="5" maxSpareThreads="75"
enableLookups="true"disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https"secure="true" SSLEnabled="true"
clientAuth="false"sslProtocol="TLS"
keystoreFile="G:\学习资料\TomcatSecurityCertificate\ServerSecurity.keystore"
keystorePass="123456"/>
l 服务器证书的绝对路径
l 服务器证书设置的密码
至此,全部配置步骤已经完成。
效果演示
在IE浏览器中输入https://localhost:8080/,显示效果如下:
看到地址栏右侧有一个小锁图标,表明此次连接与服务器是加密的。
为了更明显的看出效果,使用Chrome访问刚才的地址,效果如下:
Chrome内核的浏览器对此提示更全面。