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

2024-05-29 16:32

本文主要是介绍记一次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 镜像名

这篇关于记一次CA证书的申请、服务器上的部署过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014045

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

Java通过ServerSocket与Socket实现通信过程

《Java通过ServerSocket与Socket实现通信过程》本文介绍了Java中的ServerSocket和Socket类,详细讲解了它们的构造方法和使用场景,并通过一个简单的通信示例展示了如何... 目录1 ServerSocket2 Socket3 服务器端4 客户端5 运行结果6 设置超时总结1

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke

MySQL中存储过程(procedure)的使用及说明

《MySQL中存储过程(procedure)的使用及说明》存储过程是预先定义的SQL语句集合,可在数据库中重复调用,它们提供事务性、高效性和安全性,MySQL和Java中均可创建和调用存储过程,示例展... 目录概念示例1示例2总结概念存储过程:在数据库中预先定义好一组SQL语句,可以被程序反复调用。

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储