首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Strongwan 建立证书体系,CA根证书、服务端与各个客户端证书

Strongwan 建立证书体系,CA根证书、服务端与各个客户端证书

作者头像
鳄鱼儿
发布于 2024-09-25 00:18:51
发布于 2024-09-25 00:18:51
42401
代码可运行
举报
运行总次数:1
代码可运行

配置IPSec需要建立 PKI,PKI(公钥基础结构)包括服务器与各个客户端的私钥和证书(公钥)、对服务器和各个客户端证书签名的 CA 证书与密钥(CA 证书与密钥来自根证书颁发机构)。

支持基于证书的双向身份验证.这意味着客户端必须对服务器证书进行身份验证,并且服务器必须在建立相互信任之前对客户端证书进行身份验证。

PKI 生成流程

1. 生成主证书颁发机构 (CA)证书和密钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pki --gen --type sm2 --outform pem > ca.key.pem
pki --self --in ca.key.pem --type sm2 --digest sm3 --dn "C=cn, O=demo, CN=VPN CA" \
                --ca --lifetime 3650 --outform pem > ca.cert.pem

在CA主机上完成:

  • 生成CA的SM2私钥 (ca.key.pem)
  • 使用该私钥创建自签名的CA证书 (ca.cert.pem)
  • CA证书有效期为10年 (3650天)

生成后, CA需要将ca.cert.pem分发给服务器和客户端。

2. 生成服务器的证书和密钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pki --gen --type sm2 --outform pem > server.key.pem
pki --pub --type sm2 --in server.key.pem --outform pem > server.pub.key.pem
pki --req --in server.key.pem --type sm2 --dn "C=cn, O=demo, CN=VPN Server" \
                --digest sm3 --outform pem > server.req.pem

在服务器上完成:

  • 生成服务器的SM2私钥 (server.key.pem)
  • 从私钥提取公钥 (server.pub.key.pem)
  • 创建证书签名请求 (server.req.pem)

服务器将server.req.pem发送给CA进行签名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pki --issue --in server.req.pem --type pkcs10 --digest sm3 --lifetime 1200 \
                --cacert ca.cert.pem --cakey ca.key.pem --flag serverAuth \
                --flag ikeIntermediate --san="172.16.0.75" \
                --outform pem > server.cert.pem

在CA主机上完成:

  • CA使用自己的私钥和证书签发服务器的证书
  • 证书有效期为1200天
  • 包含serverAuth和ikeIntermediate标志
  • 添加服务器IP地址作为主题备用名称 (SAN)

CA将生成的server.cert.pem发送回服务器。

3. 生成客户端的证书和密钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pki --gen --type sm2 --outform pem > client.key.pem
pki --pub --type sm2 --in client.key.pem --outform pem > client.pub.key.pem
pki --req --in client.key.pem --type sm2 --dn "C=cn, O=demo, CN=VPN Client" \
                --digest sm3 --outform pem > client.req.pem

在客户端设备上完成:

  • 生成客户端的SM2私钥 (client.key.pem)
  • 从私钥提取公钥 (client.pub.key.pem)
  • 创建证书签名请求 (client.req.pem)

客户端将client.req.pem发送给CA进行签名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pki --issue --in client.req.pem --type pkcs10 --digest sm3 --lifetime 1200 \
                --cacert ca.cert.pem --cakey ca.key.pem  --san="172.16.0.91" \
                --outform pem > client.cert.pem

在CA主机上完成:

  • CA使用自己的私钥和证书签发客户端的证书
  • 证书有效期为1200天
  • 添加客户端IP地址作为主题备用名称 (SAN)

CA将生成的client.cert.pem发送回客户端。

根 CA 证书的作用

  1. 证书验证链: 在TLS/SSL连接建立过程中,服务器会向客户端提供其证书。客户端需要验证这个证书的有效性。验证过程包括检查证书是否由受信任的CA签发。因此,客户端需要有CA的证书来进行这个验证。
  2. 信任锚: CA证书作为信任锚(Trust Anchor),是整个证书信任链的起点。没有CA证书,客户端就无法验证服务器证书的真实性。
  3. 服务器端验证: 如果VPN配置要求双向认证(即服务器也要验证客户端的身份),那么服务器同样需要CA证书来验证客户端证书的有效性。
  4. 自签名CA: 在这个场景中,我们使用的是自签名的CA证书,而不是商业CA的证书。商业CA的根证书通常预装在操作系统或浏览器中,但自签名CA证书需要手动分发和安装。

分发过程:

  • 对于服务器:CA证书(ca.cert.pem)需要安装在服务器上,通常与服务器自己的证书(server.cert.pem)和私钥(server.key.pem)一起配置。
  • 对于客户端:CA证书需要安装在客户端的信任存储中。这样客户端才能信任由这个CA签发的服务器证书。

安全注意事项:

  • 只分发CA的公共证书(ca.cert.pem),绝不能分发CA的私钥(ca.key.pem)。
  • 通过安全的渠道分发CA证书,以防止中间人攻击。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PKI - 借助Nginx实现_客户端使用CA根证书签发客户端证书
通过执行这两个命令,您可以生成一个自签名的根证书,用于签发其他证书,如服务器证书、客户端证书等。
小小工匠
2024/05/26
5130
PKI - 借助Nginx实现_客户端使用CA根证书签发客户端证书
写给开发人员的实用密码学 - CA
在上一篇文章《写给开发人员的实用密码学 - 数字证书》中介绍了数字证书,但要让用户信任颁发的数字证书,这里就需要引入 CA 中心。
云水木石
2021/05/11
1.3K0
写给开发人员的实用密码学 - CA
PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。openssl支持Linux、UNIX、windows、Mac等平台。openssl目前最新的版本是0.9.8e.
小小工匠
2024/05/26
5420
PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
PKI - 借助Nginx实现_客户端使用自签证书供服务端验证
总的来说,客户端使用自签名证书供服务端验证可以加强通信的安全性和可靠性,确保通信双方的身份和数据的安全,建立起信任关系,从而提高整体系统的安全性。
小小工匠
2024/05/26
5560
PKI - 借助Nginx实现_客户端使用自签证书供服务端验证
写给开发人员的实用密码学 - 数字证书
在数字签名部分,我们讲到数字签名可以起到“防抵赖”的作用。然而,在开放的互联网环境中,通信的双方通常是互不相识,数字签名并不能解决身份认证的问题。比如在数字签名中,私钥签名,公钥验证签名。如果有人冒充淘宝给了你公钥,对方持有假冒公钥对应的私钥,这种情况下签名、验签都没问题,但你是在和一个假的淘宝通信。退一步说,你开始拿到的确实是淘宝发布的公钥,如果有人偷偷替换掉了你的机器上的公钥,这样你实际拥有的是李鬼的公钥,但是还以为这是淘宝的公钥。因此,李鬼就可以冒充淘宝,用自己的私钥做成"数字签名",写信给你,而你则使用假的公钥进行解密。
云水木石
2021/04/22
1.5K0
jks 证书文件的生成步骤
作为文件形式存在的证书,一般有三类: A. 包含有私钥的证书,包含了公钥和私钥,用pkcs12标准,而一般以pfx 作为扩展名; B. DER 编码证书,不含私钥,以cer 结尾,文件是二进制data. 通常CA(无论是intermediate CA还是root CA)证书都是这类; C. BASE64编码的证书,这类证书也不含私钥,一般也以cer结尾,是pem证书, 这类证书可以直接cat 出结果, 特征是”-----BEGIN CERTIFICATE----- “开头,“-----END CERTIFICATE-----”结尾;
qsjs
2022/09/09
6.7K0
PKI - 借助Nginx 实现Https_使用CA签发证书
总之,使用 CA 签发证书可以确保通信的安全性、可靠性和完整性,为网络通信提供了重要的保护和信任基础。
小小工匠
2024/05/26
4700
PKI - 借助Nginx 实现Https_使用CA签发证书
用openssl添加https访问并设置客户端信任
x.509 是密码学里面的公钥证书的格式标准. 就是说x.509是一种证书的格式,其实我们经常用这种格式的证书,只是可能没怎么注意过证书格式的标准而已.
qsjs
2020/07/07
3.3K0
pki密码技术_PKI体系管理
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172002.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/23
1K0
pki密码技术_PKI体系管理
生成Nginx服务器SSL证书和客户端证书
下面的命令用于生成一个2048bit的pass key, -passout pass:111111 用于避免交互式输入密码
星哥玩云
2022/07/27
6.5K0
如何解决 InsecureRequestWarning: Unverified HTTPS request is being made to host ‘47.113.219.226‘. Adding
如何解决 InsecureRequestWarning: Unverified HTTPS request is being made to host '47.113.219.226'. Adding certificate verification is strongly advised. 问题(全网解决方案大全)
猫头虎
2025/06/08
5920
数字证书 CA_数字证书申请
上面就是利用认证机构Trent进行公钥密码通信的流程。其中1、2、3这几个步骤仅在注册新公钥时才会进行,并不是每次通信都需要。此外,步骤 4 仅在Alice第一次用公钥密码向Bob发送消息时才需要进行,只要Alice将Bob的公钥保存在电脑中,在以后的通信中就可以直接使用了。
全栈程序员站长
2022/11/03
4.3K0
数字证书 CA_数字证书申请
SSL与TLS协议原理与证书签名多种生成方式实践指南
原文地址: SSL与TLS协议原理与证书签名多种生成方式实践指南 (https://mp.weixin.qq.com/s/g-X8UPNwIkuR_Qd2MDvVQw)
全栈工程师修炼指南
2022/09/29
1.9K0
SSL与TLS协议原理与证书签名多种生成方式实践指南
使用 openssl 生成证书(含openssl详解)
openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。 官网:https://www.openssl.org/source/
菲宇
2019/06/12
19.1K0
使用 openssl 生成证书(含openssl详解)
Golang(十一)TLS 相关知识(二)OpenSSL 生成证书
0. 前言 接前一篇文章,上篇文章我们介绍了数字签名、数字证书等基本概念和原理 本篇我们尝试自己生成证书 参考文献:TLS完全指南(二):OpenSSL操作指南 1. OpenSSL 简介 OpenSSL 是一个开源项目,其组成主要包括三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls OpenSSL 主要用于秘钥证书管理、对称加密和非对称加密 1.1 指令 常用指令包括:genrsa、req、x509 1.1.1 genrs
西凉风雷
2022/11/23
2.5K0
linux openssl制作ssl证书_openssl生成自签名证书 c++代码
最近,被分配了一个任务,完成数字证书管理系统的开发,一开始我是一脸懵逼的,因为以前我对于什么数字证书都没了解过,可谓了一片空白,也不知其是用来干嘛的。于是,我奋发图强,用了一个下午加晚上的时间来脑补这部分概念知识,原来数字证书其实就是网站的身份认证。
全栈程序员站长
2022/11/04
4.4K0
linux openssl制作ssl证书_openssl生成自签名证书 c++代码
SSL证书生成流程
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socketlayer(SSL),SSL安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。 SSL网站不同于一般的Web站点,它使用的是“HTTPS”协议,而不是普通的“HTTP”协议。因此它的URL(统一资源定位器)格式为“https://www.baidu.com”。
yaohong
2019/09/11
3.9K0
SSL证书生成流程
如何使用SSL证书
SSL证书是用于在WEB服务器与浏览器以及客户端之间建立加密链接的加密技术,通过配置和应用SSL证书来启用HTTPS协议,来保护互联网数据传输的安全,全球每天有数以亿计的网站都是通过HTTPS来确保数据安全,保护用户隐私。
用户8418197
2021/09/05
4.1K0
[MCP学习笔记]MCP双向认证体系:mTLS 安全通信
在这个网络安全日益重要的时代,双向认证体系成为了保障通信安全的关键,是一个在安全通信领域有着广泛应用且极具研究价值的话题哦。
二一年冬末
2025/05/08
6090
[MCP学习笔记]MCP双向认证体系:mTLS 安全通信
SSL/TLS 双向认证(一) — SSL/TLS 工作原理
本文部分参考: https://www.wosign.com/faq/faq2016-0309-03.htm https://www.wosign.com/faq/faq2016-0309-04.htm http://blog.csdn.net/hherima/article/details/52469674
全栈程序员站长
2022/09/03
11.6K0
SSL/TLS 双向认证(一) — SSL/TLS 工作原理
推荐阅读
相关推荐
PKI - 借助Nginx实现_客户端使用CA根证书签发客户端证书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档