证书分很多种格式,例如X.509(.crt文件)、PKCS #7(.p7s文件)等等。不同的网站服务器可能要求不同格式的证书。很多时候,给我们的证书签名的是二级证书机构,它上面还有根证书机构。所以你在购买签名过的证书以后,它还会给你一个它自己的证书叫做“Intermediate CA(中间证书)”,格式和你自己的证书是一样的。在部署证书的时候你需要同时部署你自己的证书还有中间证书,这就叫做Certificate Chain。好的证书发行机构会提供多种证书供你选择下载,建议下载同时下载X.509还有 PKCS #7两种格式。不要忘记下载 X.509格式的中间证书。PKCS #7格式的不要是因为这个格式自带了各种中间证书。
2. 部署证书到Tomcat
Tomcat要求的是包含签名过证书的keystore文件和keystore密码。所以我们要先把证书导入keystore
2.1 导入证书到KeyStore
$JAVA_HOME/bin/keytool -import -alias oschina -trustcacerts -file oschina.p7s -keystore oschina.keystore上面的命令中 alias “oschina” 和之前申请证书的时候输入的 alias 要一致。
2.2 修改Tomcat配置
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="/oschina/webapp/oschina.keystore" keystorePass="xxxxxxx"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />
3. 部署证书到Nginx
Nginx和Tomcat不一样,它要求的是证书文件 .crt 和私钥 .key 。遗憾的是,我们的私钥在keystore里面,而JDK自带的keytool并不提供私钥的导出功能,所以我们得借助第三方工具来导出私钥。
3.1 导出私钥(key)
有一个开源的私钥导出工具叫做 java-exportpriv 。它是一个简单的java程序,你下载以后参考它的说明,编译,然后运行即可,非常简单,我就不多罗嗦了。
3.2 创建certificate chain
和Apache不一样,Nginx没有Certificat Chain这个参数,所以你要把你的证书和中间证书合并。合并证书很简单,创建一个先的文件 oschina-chain.crt,内容如下:
-----BEGIN CERTIFICATE-----
这里是你证书的内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
这里是中间证书的内容
-----END CERTIFICATE-----
3.3 修改Nginx配置文件
server {listen 443 ssl;
server_name localhost;
ssl on;
ssl_certificate /oschina/webapp/oschina-chain.crt;
ssl_certificate_key /oschina/webapp/oschina.key;
location / {
include proxy.conf;
proxy_pass https://61.145.122.155:443;
}
}
4. 验证证书是否安装正确
首先当然是自己用HTTPS的方式访问自己的网站,看看浏览器是否报错或者报警,记得要把各种浏览器都试一遍。然后用 在线工具来测试你的网站HTTPS的配置是否正确,如果都测试通过,那么就大功搞成啦!
原文地址: