记一次CA证书的申请、服务器上的部署过程

1.简介

最近用dockerliberity服务器上部署了一个应用。由于安全方面的考虑,服务器管理员需要我们启用https连接。这就需要我们去给liberity配置ssl证书。

2.步骤

1.申请CA证书

  1. 申请CA证书需要证书请求文件,需要在Server端生成。可以在server端用openssl命令生成。
    证书请求文件里面包含的是serverpublic key。下面的命令生成了一个xxxx.com.key,这个就是服务器的私钥。xxxx.com.csr就是证书请求文件,里面包含的是与xxxx.com.key配对的公钥。
    openssl req -new -sha256 -newkey rsa:2048 -nodes -keyout xxxx.com.key -out xxxx.com.csr
    
    思考:为什么需要证书请求文件?
    CA机构会用自己的私钥给证书请求文件签一个名,这样我们就得到了CA签名的证书,里面包含了server的公钥。
    浏览器在打开我们的网站的时候,server会将这个经过CA签名的证书发给浏览器,浏览器或操作系统内置了包含CA机构的公钥,用公钥将证书解密,得到server的公钥,用于后面https协商对称加密的秘钥。
  2. csr文件提交到CA机构。提交一些必要的信息之后,CA机构会返回给你CA证书。
    我这里使用的是内网的CA,它最终提供了三种文件格式的证书(crt,der, pkcs7b)。

2.将CA证书和服务器私钥存入p12秘钥库中

由于liberity服务器需要p12秘钥库形式的证书,所以我们需要对证书进行转换。
证书转换的时候,遇到了很多坑。
crtder格式的证书在转换的时候都会出错,出现unable to load certificate的错误。怀疑和CA网站上下载的证书的格式有关系,后面还需要研究下,这些格式之间有什么区别联系。
最终通过先将pkcs7b格式证书转换成pem格式的证书,然后将pem格式的证书转换成p12格式的证书,达到了目的。
pkcs7b格式的证书下载下来,文件后缀名是pem的,但是格式其实不是pem。需要先转成pem
pkcs7格式的cert.pem转成pem格式的certificate.pem

openssl pkcs7 -print_certs -in cert.pem -out certificate.pem

再将pem格式的certificate.pem转成p12格式的certificate.p12,注意需要将服务器的私钥xxxx.com.key一起放在p12中(设置了export密码,这个密码要和server.xml中的password对应):

openssl pkcs12 -export -in certificate.pem -inkey xxxx.com.key -out certificate.p12

3. 配置liberity服务器

liberity服务器的ssl配置和tomcat服务器的配置是很类似的。
参考:https://www.ibm.com/docs/zh/was-liberty/nd?topic=liberty-ssl-configuration-attributes
https://www.openliberty.io/docs/21.0.0.5/reference/feature/transportSecurity-1.0.html

修改server.xml,加入下面的ssl配置:
p12 文件需要放在/output/resources/security/文件夹下,这里是liberity默认的存储key的位置。

    <!-- SSL -->
    <sslDefault sslRef="izuSSLConfig" />
    <ssl id="izuSSLConfig" keyStoreRef="defaultKeyStore"
        clientAuthenticationSupported="false" sslProtocol="TLSv1.2"/>
    <keyStore id="defaultKeyStore" location="/output/resources/security/certificate.p12" 
        type="PKCS12" readOnly="true" password="xxxxxx" />

4. certificate过期了,进行替换

证书过期了,需要替换。需要在IBM内网,重新生成证书,然后替换。刚开始的想法是想要重新制作镜像,最后发现可以直接使用docker cp命令替换正在运行的容器里面的证书,然后重启容器即可。

docker cp certificate.p12  镜像名:/output/resources/security/  
docker restart 镜像名
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值