1、证书申请及管理
对于已经拥有域名及公网服务器的用户,可以通过腾讯云申请TrustAsia DV SSL CA证书,证书申请流程包含填写基本信息和域名认证两步,非常清晰和简单,没有什么需要过多描述的。
证书申请及域名认证完成后,即可以证书管理界面下载证书
2、服务器端证书部署
下载的文件是一个压缩文件包,解压后可以看到分别有Apache、IIS、Ngnix、Tomcat四个不同的目录分别对应相应的WEB服务部署环境,下面以Tomcat为例进行说明。
(2.1)安装证书
配置SSL连接器,将解压后tomcat目录中的www.domain.com.jks
文件存放到tomcat安装目录的conf目录下,然后配置同目录下的server.xml
文件:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="confwww.domain.com.jks"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
注:
配置文件参数 | 说明 |
---|---|
clientAuth | 如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证 |
keystoreFile | 指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<catalina_home> (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为 “.keystore”的文件。 |
keystorePass | 密钥库密码,指定keystore的密码。(如果申请证书时有填写私钥密码,密钥库密码即私钥密码) |
sslProtocol | 指定套接字(Socket)使用的加密/解密协议,默认值为TLS |
(2.2)http自动跳转https的安全配置
到conf目录下的web.xml。在</welcome-file-list>
后面,</web-app>
,也就是倒数第二段里,加上这样一段:
<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>
这步目的是让非ssl的connector跳转到ssl的connector去。所以还需要前往server.xml进行配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
redirectPort改成ssl的connector的端口443,重启tomcat后便会生效。
OK,到此为止,服务器端配置便完成了,在浏览器中输入类似于https://www.domain.com试试吧。
3、客户端证书使用
在某些特殊情况下(如cas及使用cas作为单点登录环境的网站),客户端也需要配置秘钥库文件:
(3.1)在服务器端导出证书
keytool -export -alias www.domain.com -keystore www.domain.com.jks -file domaincas.cer
(3.2)将证书以电子邮件或者其他可以传递的形式传送到需要部署的客户端
(3.3)客户端导入证书
首先将服务端生成的证书文件(domaincas.cer)复制到$JAVA_HOME/jre/lib/security下
导入证书:
keytool -import -trustcacerts -alias www.domain.com -storepass changeit -file domaincas.cer -keystore cacerts
注意客户端的密码一般为changeit,不可与私钥密码混淆
(3.4)客户端服务器配置(以tomcat为例)
注意如果CAS中设定了客户端可以不用HTTPS即可访问的话,本步骤省略,否则同CAS SERVER端HTTPS的配置一样。
修改tomcat安装目录中conf目录中的server.xml:
<Connector protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="***" keystorePass="***" port="443"/>