开发者社区> 问答> 正文

关于Tomcat+nginx配置https登录的问题

落地花开啦 2016-03-25 16:13:34 1599

我在配置Tomcat+nginx实现https登录中,有两点疑问:

  1. Tomcat是否需要在server.xml中配置证书,我在网上看到有人说Tomcat不需要配置证书;
  2. 我现在有几个测试证书文件:根证书root.cer、中级证书Intermediate.cer、SSL证书sslCert.cer和keystore文件,但在nginx中配置证书存在疑问,ssl_certificate 和ssl_certificate_key 不知该如何配置,网上大部分都是分别配置的.crt文件和.pem文件,我需要如何把我的对应证书进行转换?
应用服务中间件 网络安全 nginx
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:14:37

    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的配置是否正确,如果都测试通过,那么就大功搞成啦!

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程