美文网首页
tomcat 使用的证书

tomcat 使用的证书

作者: shark_tear | 来源:发表于2021-08-13 17:00 被阅读0次

在前天晚上处理一个tomcat配置证书的问题的时候,发现了一些新东西。在这里记录下来和大家分享一下。
这次处理的问题是,一个运维在更新他的tomcat证书的时候,发现更新的证书有问题,无法正常使用。然后我登到这个服务器上的时候发现,他给的证书目录下创建的默认证书是apikeystore.keystore这样一个文件。还有从证书供应商那里下载的证书文件xxx.com.crt,而web浏览器配置SSL正常情况下,需要有证书文件和私钥文件。但是他那里怎么都找不到私钥文件,经过仔细询问才知道。他用的是上一次购买的csr文件,直接发送到证书供应商那里购买的新证书,而旧的私钥文件找不到了。

正常的证书申请流程是:

  1. 生成一对公私钥
  2. 使用私钥创建证书申请请求,即certificate signing request,会生成一个.csr后缀的文件,这个过程中会在申请请求里输入自己的组织信息以及需要申请的域名。
  3. 将csr文件发送给证书供应商,由证书供应商签发你的证书。
  4. 签发完毕后,就可以在证书供应商的网站上下载各种格式的证书的。

在这个过程中,私钥一直是由你自己保存的,一定不能泄露。最后在你手上会有:

  1. 公私钥
  2. 证书签发请求文件
  3. 证书文件。

而tomcat它使用的证书支持两种格式:

  1. .pfx后缀的证书
  2. .keystore格式的证书

第一种证书是最常见的,很多网站都会使用这种包含证书和私钥文件的二合一证书。第二种是tomcat使用java的jdk自带的keytool工具生成的证书,根据查询的信息可以知道,它实际上也是一个证书和私钥二合一的文件。也就是说,可以从它里面导出所需要的私钥,思路有了,就开始操作。

  1. 转换.keystore格式证书到.p12格式证书
    .keystore格式的证书,使用openssl工具无法直接导出证书,需要先把它转换为.p12这个openssl工具支持的证书。至于.keystore格式的证书能不能直接使用keytool工具直接导出证书,得留到后面再研究。.keystore.p12的命令是:
keytool -importkeystore \
    -srckeystore keystore.keystore \
    -destkeystore keystore.p12 \
    -deststoretype PKCS12 \
    -deststorepass <password> \
    -destkeypass <password>

参数解释:

  • -srckeystore,后面跟上的是keystore文件
  • -destkeystore,即要生成的p12格式证书文件名
  • -deststoretype,要生成的p12格式证书文件格式,即PKCS12
  • -deststorepass,要生成的p12格式证书文件密码,设置一个密码。需要用引号引起来,例如'yourpassword'
  • -destkeypass,要生成的p12格式证书内私钥的密码。

执行这个命令后就会生成一个keystore.p12文件,在执行这个命令的过程中,会要求你们输入keystore.keystore这个文件的密码,然后我们就可以从这个文件里导出纯证书(不包含私钥)和私钥了。

导出证书的命令:

openssl pkcs12 -in keystore.p12  -nokeys -out cert.pem

导出私钥的命令

openssl pkcs12 -in keystore.p12  -nodes -nocerts -out key.pem

在执行上述两个命令的过程中,需要你输入上面设置的deststorepassdestkeypass密码。

最后我们就可以得到想要的私钥key.pem,如果想把它转成一个.key格式的私钥文件,也可以使用openssl工具来转换,命令是:

openssl rsa  -in key.pem -out key.key

这样就可以得到最原始的私钥文件了。

获取到私钥文件后,使用私钥文件、自己网站域名的证书文件和根证书(CACert.crt,证书供应商提供)文件,生成一个.pfx格式的证书(里面包含私钥、网站域名证书文件和根证书):

openssl pkcs12 -export -out certificate.pfx -inkey key.key \
    -in cer.pem -certfile CACert.crt

获取到pfx格式的证书后,在tomcat里配置使用:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" clientAuth="false" 
      sslProtocol="TLS" keystoreFile=”/path/to/mycert.pfx” keystoreType=”PKCS12″
      keystorePass="your_PKCS12_password" />

keystore格式证书

最后说一下tomcat使用的另外一种证书的格式,这个证书的文件名后缀是.keystore,之前没有见过这种证书,后面查询才知道是使用jdk工具包里的keytool工具生成的一个证书格式。这个证书生成的流程是:

  1. 使用keytool工具生成一个mydomain.jks文件,这里会给这个文件设置一个密码;
  2. 使用keytoolmydomain.jks文件来生成证书申请请求文件(.csr文件)
  3. 将.csr文件发送到证书供应商那里申请证书
  4. 在证书供应商那里获取到.p7b后缀的证书文件
  5. 将获取到的.p7b后缀的证书文件放到mydomain.jks文件一个目录下
  6. 在tomcat里的server.xml文件中配置使用mydomain.jks文件
    配置项如下:
<Connector
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="${user.home}/.keystore" keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"/>

普通证书和私钥的配置模式

除了上面两种只使用一个文件的配置方式,tomcat还支持同时配置证书和私钥文件的模式:


<Connector port="8443"
   protocol="org.apache.coyote.http11.Http11AprProtocol"
   secure="true" scheme="https"
   SSLEnabled="true" SSLCertificateFile="/path/to/ocsp-cert.crt"
   SSLCertificateKeyFile="/path/to/ocsp-cert.key"
   SSLCACertificateFile="/path/to/ca.pem"
   SSLVerifyClient="require"
   SSLVerifyDepth="10"
   clientAuth="true"/>

即不需要再转换证书格式,直接使用下载到的证书和自己保存的私钥路径。

相关文章

  • SSO单点登录之CAS部署教程

    流程梳理 配置安全证书1.1 将证书导入到tomcat(客户端的tomcat)所使用的jdk密钥库中1.2 将证书...

  • tomcat 使用的证书

    在前天晚上处理一个tomcat配置证书的问题的时候,发现了一些新东西。在这里记录下来和大家分享一下。这次处理的问题...

  • tomcat-ssl证书

    tomcat-ssl证书 创建证书 注意 :下面的是实验使用的,真实环境下需要去购买证书 $ keytool -g...

  • 配置Tomcat使用https协议

    一. 创建tomcat证书 这里使用JDK自带的keytool工具来生成证书: 1. 在jdk的安装目录\bin\...

  • tomcat配置https(无CA证书)

    1、使用jdk自带的工具生成tomcat自签名证书 tomcat.keystore 这里主要要注意两个:(1)、密...

  • Tomcat配置SSL证书

    Tomcat配置SSL证书 一、使用JDK自带的工具生成数字证书 keytool.exe 命令位于Java\jdk...

  • Tomcat ssl and Tomcat safe

    安装证书 Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。 1、证...

  • 阿里云服务器绑定https

    安装证书 Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。 文件说...

  • 配置tomcat8443端口号https双向认证,并使用PHP

    1.明确https域名,如:tomcat.loc,生成证书时使用 2.创建证书目录 //进入tmp目录 cd /h...

  • Tomcat7 的 HTTPS 访问方式配置

    一. 环境 下载 tomcat7 安装好 jdk 二. 正式配置 1. 使用jdk生成证书 2. 将证书配置到jd...

网友评论

      本文标题:tomcat 使用的证书

      本文链接:https://www.haomeiwen.com/subject/ahddbltx.html