记一次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

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域