我在配置Tomcat+nginx实现https登录中,有两点疑问:
tomcat 需要在 server.xml 中配置证书
部署证书到Tomcat
Tomcat要求的是包含签名过证书的keystore文件和keystore密码。所以我们要先把证书导入keystore
导入证书到KeyStore $JAVA_HOME/bin/keytool -import -alias oschina -trustcacerts -file oschina.p7s -keystore oschina.keystore
上面的命令中 alias “oschina” 和之前申请证书的时候输入的 alias 要一致。
修改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" />
部署证书到Nginx
Nginx和Tomcat不一样,它要求的是证书文件 .crt 和私钥 .key 。遗憾的是,我们的私钥在keystore里面,而JDK自带的keytool并不提供私钥的导出功能,所以我们得借助第三方工具来导出私钥。
导出私钥(key)
有一个开源的私钥导出工具叫做 java-exportpriv 。它是一个简单的java程序,你下载以后参考它的说明,编译,然后运行即可,非常简单,我就不多罗嗦了。
创建certificate chain
和Apache不一样,Nginx没有Certificat Chain这个参数,所以你要把你的证书和中间证书合并。合并证书很简单,创建一个先的文件 oschina-chain.crt,内容如下:
-----BEGIN CERTIFICATE-----
这里是你证书的内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
这里是中间证书的内容
-----END CERTIFICATE-----
修改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;
}
验证证书是否安装正确
首先当然是自己用HTTPS的方式访问自己的网站,看看浏览器是否报错或者报警,记得要把各种浏览器都试一遍。然后用 在线工具来测试你的网站HTTPS的配置是否正确,如果都测试通过,那么就大功搞成啦!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。