惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
F
Full Disclosure
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
L
LangChain Blog
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
GbyAI
GbyAI
Y
Y Combinator Blog
博客园 - Franky
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
Jina AI
Jina AI
N
Netflix TechBlog - Medium
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
腾讯CDC
H
Help Net Security
H
Heimdal Security Blog
J
Java Code Geeks
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
The Exploit Database - CXSecurity.com
The Register - Security
The Register - Security
大猫的无限游戏
大猫的无限游戏
T
Threatpost
B
Blog RSS Feed
T
Threat Research - Cisco Blogs
Microsoft Security Blog
Microsoft Security Blog
S
Securelist
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
量子位
AWS News Blog
AWS News Blog
Project Zero
Project Zero
P
Proofpoint News Feed
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
S
Schneier on Security

泠泫凝的异次元空间

通过串口安装Linux | 泠泫凝的异次元空间 curl自编译 | 泠泫凝的异次元空间 Minecraft 认证服务器代理 | 泠泫凝的异次元空间 飞塔分流配置实战 | 泠泫凝的异次元空间 Windows 安全启动证书检查 | 泠泫凝的异次元空间 Lxn-OneDriveCLI | 泠泫凝的异次元空间 华三交换机配置 ERPS 环网 | 泠泫凝的异次元空间 PVE 配置 VLAN 感知 | 泠泫凝的异次元空间 MT7922 无线网卡安装 | 泠泫凝的异次元空间 无显示输出 Linux 主机配置桌面显示 | 泠泫凝的异次元空间 Wireguard 部署 SOP 手册(自用) | 泠泫凝的异次元空间 Zabbix 7.4 通过钉钉发送告警提醒 | 泠泫凝的异次元空间 Debian with xfce 通过 VNC 共享屏幕 华三S6860 IRF堆叠 | 泠泫凝的异次元空间 iPad 应用侧载 | 泠泫凝的异次元空间 Smart DNS 分区解析 | 泠泫凝的异次元空间 建立 NFS 服务器并挂载到客户端 | 泠泫凝的异次元空间 将 Android 以 MTP 方式连接至 Debian PVE 虚拟机迁移至 vCenter | 泠泫凝的异次元空间 vCenter 虚拟机迁移至 PVE | 泠泫凝的异次元空间 PVE迁移时提示密钥验证失败 | 泠泫凝的异次元空间 修改Windows设备设置区域 | 泠泫凝的异次元空间 恢复 SecureCRT 7.x 保存的密码 | 泠泫凝的异次元空间 PVE 超融合下电与上电流程 | 泠泫凝的异次元空间 记一次Zabbix异常处理 | 泠泫凝的异次元空间 苹果设备保存SHSH2 | 泠泫凝的异次元空间 PVE超融合部署 | 泠泫凝的异次元空间 树莓派启用zram | 泠泫凝的异次元空间 在 Hyper-V 上安装 EVE-NG | 泠泫凝的异次元空间 Zabbix 部署与 Windows 硬件信息收集 | 泠泫凝的异次元空间 在WSL2中安装CUDA支持 | 泠泫凝的异次元空间 MinIO 集群部署 | 泠泫凝的异次元空间 vmware 虚拟化平台备份工具 Veeam 12 安装及配置 ubuntu 24.04 安装 nVidia 驱动后网卡消失 XMRig 自编译 | 泠泫凝的异次元空间 云桌面通过组策略统一体验配置 | 泠泫凝的异次元空间 Fortigate SSLVPN 无法连接内网 VNC 服务器 CentOS 7 使用镜像作为本地源并将自身作为YUM源服务器 | 泠泫凝的异次元空间 CentOS 7 离线更新 OpenSSH 服务 使用KubeKey离线部署Kubernetes | 泠泫凝的异次元空间 使用PGP对消息进行签名 | 泠泫凝的异次元空间 禁止MinIO展示桶内文件列表 | 泠泫凝的异次元空间 华为 Fusion Access 云桌面部署 | 泠泫凝的异次元空间 vmware Horizon 模板机部署 | 泠泫凝的异次元空间 vmware Horizon 云桌面与云应用部署 | 泠泫凝的异次元空间 Citrix XenApp 云应用交付 | 泠泫凝的异次元空间 Citrix XenDesktop 云桌面部署 | 泠泫凝的异次元空间 PVE LVM 扩容 | 泠泫凝的异次元空间 Linux 网络聚合(bond方式) | 泠泫凝的异次元空间 Citrix XenServer 7.2 部署教程 | 泠泫凝的异次元空间 在 Windows Server 2019 上安装 AMD 显卡驱动 openEuler 安装并使用 EPEL 源 | 泠泫凝的异次元空间 从已有Linux系统创建带桌面环境的Docker镜像 | 泠泫凝的异次元空间 下载联想原厂镜像及解密 | 泠泫凝的异次元空间 在基于 arm 架构的服务器上安装 PVE | 泠泫凝的异次元空间 自制 EVE-NG 镜像 | 泠泫凝的异次元空间 不使用 Snap 在 ubuntu 上安装 Chromium 浏览器 Fortigate 6.2 固件从 PPPoE 获得 IPv6 地址 Fortigate 手记 | 泠泫凝的异次元空间 Fortigate 通过命令行自定义 NTP 服务器 | 泠泫凝的异次元空间 arm 架构 CentOS 7 安装 MySQL 5.7 版本 ubuntu 20 安装计算卡驱动和 CUDA Toolkit 锐捷诺客云添加设备后一直显示“等待同步” | 泠泫凝的异次元空间 Windows 10 自动登录 | 泠泫凝的异次元空间 OpenWRT IPv6 防火墙设置 | 泠泫凝的异次元空间 k8s 部署踩坑合集 | 泠泫凝的异次元空间 改变 Ubuntu TTY 终端字体 | 泠泫凝的异次元空间 Parted 无损扩容磁盘分区 | 泠泫凝的异次元空间 NTP服务器测试 | 泠泫凝的异次元空间 【相亲相爱】2024祝大家!新年快乐!!! ESXi中重新挂载数据盘 | 泠泫凝的异次元空间 使用 MediaMTX + RTSP 搭建低延迟直播服务器 Firewalld 手记 | 泠泫凝的异次元空间 Ubuntu 上不使用 snapd 安装 Firefox 在 armbian 上安装 xfce 和 VNC 做远程桌面 在 ubuntu 20 上使用 TigerVNC 做远程桌面 在 openEuler 上部署安装 openGauss | 泠泫凝的异次元空间 Wireguard 组网笔记 | 泠泫凝的异次元空间 让特定IP(段)走VPN连接 | 泠泫凝的异次元空间 在Wireguard中排除部分IP(段) | 泠泫凝的异次元空间 CentOS 7 上升级 OpenSSL | 泠泫凝的异次元空间 将黑群晖部署到ESXi(笔记) | 泠泫凝的异次元空间 apk 代码反编译笔记 | 泠泫凝的异次元空间 Windows 搭建 iSCSI 服务器全攻略 | 泠泫凝的异次元空间 CentOS 7 编译安装 Python 3 开源语音识别工具 Whisper | 泠泫凝的异次元空间 Ubuntu 下 Python 编译安装及关联问题解决 | 泠泫凝的异次元空间 Ansible Tower 安装 | 泠泫凝的异次元空间 提高 PowerPoint 导出到图片时的分辨率 | 泠泫凝的异次元空间 利用亚马逊云服务器和VPC 构建安全可靠的虚拟网络 | 泠泫凝的异次元空间 Windows Server 多网卡链路聚合 | 泠泫凝的异次元空间 MT3000路由+移远EC20模块体验 | 泠泫凝的异次元空间 Python安装依赖时出现ctype问题 | 泠泫凝的异次元空间 GL-MT3000日用设置 | 泠泫凝的异次元空间 解除 vCenter 的最低内存限制 | 泠泫凝的异次元空间 跳过Windows 11的强制联网和账户登录 | 泠泫凝的异次元空间 Cloudflare Trace API 信息详解 | 泠泫凝的异次元空间 在CentOS中搭建由nginx反代和Apache2作为后端的Wordpress | 泠泫凝的异次元空间 通过nginx进行文件共享 | 泠泫凝的异次元空间 禁用 sudo 时密码认证 | 泠泫凝的异次元空间
自建CA中心并签发证书 | 泠泫凝的异次元空间
Lxn's Area · 2022-02-05 · via 泠泫凝的异次元空间

个人记录,仅供参考

事先说明

  1. 本文仅为本人操作过程,仅供参考。
  2. -config参数指定配置文件路径,例如openssl req -new -x509 -key ca.key -out ca.pem -days 1 -config openssl.cnf在本文操作中,均使用默认配置文件,通常来讲一台服务器上只做一个CA中心则无需另外创建专用的配置文件。默认引用的配置文件位置:/usr/lib/ssl/openssl.cnf,链接到实际文件/etc/ssl/openssl.cnf

环境准备

OS: Ubuntu 20.04 LTS

执行apt update&&apt install openssl安装OpenSSL。

原理

看参考资料第一条:自建 CA 中心并签发 CA 证书

创建根证书

  1. 首先净手焚香,新建一个目录,再在里面再创建一个文件夹,例如MyCA

  2. 下载 openssl.cnf 文件(正确的做法是从/etc/pki/tls/openssl.cnf复制到当前工作目录,但是在 Ubuntu 软件库里面安装的 openssl 大概率是没有的,只有从源码编译的版本才会有)。

    1
    2
    3
    4

    curl -O https://raw.githubusercontent.com/openssl/openssl/master/apps/openssl.cnf

    curl -O https://flow.lxnchan.cn/files/openssl/openssl.cnf
  3. 简单处理一下cnf文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [ CA_default ]
    dir = /root/Workspace/MyCA
    certs = $dir/certs # Where the issued certs are kept
    crl_dir = $dir/crl # Where the issued crl are kept
    database = $dir/index.txt # database index file.
    new_certs_dir = $dir/newcerts # default place for new certs.

    certificate = $dir/cacert.pem # The CA certificate
    serial = $dir/serial # The current serial number
    crlnumber = $dir/crlnumber # the current crl number
    # must be commented out to leave a V1 CRL

    一般只需要改一下dir项,改成MyCA文件夹就行了。

  4. 搭建 CA 中心目录结构

    1
    2
    3
    4
    5
    6
    cd MyCA
    mkdir newcerts private
    chmod 700 private

    touch index.txt
    echo 01 > serial
  5. 生成 CA 证书的 RSA 私钥

    1
    openssl genrsa -passout pass:[Password] -aes256 -out /root/Workspace/MyCA/private/cakey.pem 2048
  6. 生成 CA 的根证书(公钥)

    • pass:参数后输入密码;
    • -key字段填写上述生成的RSA私钥地址;
    • -days字段为证书有效期,单位为天;
    • -subj参数下证书主题字段定义参考证书主题(Subject)中字段的含义节;
    • -out参数为输出位置。

    下述指令一并完成了 CA 证书签名请求和对证书进行自签名两件事情。

    1
    openssl req -x509 -passin pass:[Password] -new -nodes -key /root/Workspace/MyCA/private/cakey.pem -days 3650 -subj "/C=CN/O=Organization/CN=My Org" -out Root_CA.pem

    把上面的Root_CA.pem复制出来到Windows上,改一下后缀名改成crt就可以双击安装。具体安装方法参考下述给客户端安装根证书节。

生成服务端证书

  1. 创建证书请求

    1
    2
    3
    4
    5
    6
    7
    8

    cd newcerts
    mkdir foo
    cd foo

    (umask 077; openssl genrsa -out foo.key 2048 )

    openssl req -new -key foo.key -out foo.csr
  2. 创建附加用途
    新建ext文件(例如foo.ext),该文件上半部分基本不需要修改。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth, clientAuth
    subjectAltName=@SubjectAlternativeName

    [ SubjectAlternativeName ]
    IP.1=10.5.66.233
    IP.2=10.5.66.114
    IP.3=10.5.67.1
    DNS.1=office-server.myorg.org
    DNS.2=oa-auth.intranet.myorg.org
    DNS.3=oa-teams.intranet.myorg.org

    [ SubjectAlternativeName ]段下面填入“证书通用名称”(备用名称),即除了主要名称外其他的名称。

    1
    2
    3
    4
    5
    6
    7
    extendedKeyUsage 可以指定证书目的,即用途,一般有:
    serverAuth:保证远程计算机的身份
    clientAuth:向远程计算机证明你的身份
    codeSigning:确保软件来自软件发布者,保护软件在发行后不被更改
    emailProtection:保护电子邮件消息
    timeStamping:允许用当前时间签名数据
    如果不指定,则默认为 所有应用程序策略
  3. 在 CA 签发该证书

    • -in参数为证书颁发请求位置;
    • -CACA 公钥位置;
    • -CAkeyCA 私钥位置;
    • -out已签发过的证书输出位置;
    • -days证书有效期天数,目前 CA 一般都不会颁发超过一年的证书;
    • -extfile输入EXT文件。

    证书签发:

    1
    2
    3
    4
    openssl x509 -req -in foo.csr \
    -CA /root/Workspace/MyCA/Root_CA.pem \
    -CAkey /root/Workspace/MyCA/private/cakey.pem -CAcreateserial \
    -out foo.crt -days 365 -sha256 -extfile foo.ext
  4. 签发完了之后证书目录就可以拿去用了。

客户端安装根证书

Windows

基于 Windows 10 Pro 21H2 19044.1586 测试

双击下crt证书文件,点击安装证书,存储位置选择本地计算机,再下一个页面中,选择将所有的证书放入下列存储,在文本框右侧点击选择,选择受信任的根证书颁发机构,确定并点击下一步,点击完成后出现导入成功完成安装。

macOS

基于 macOS Big Sur 11.5.2 测试

  1. 首先在启动台中搜索钥匙串访问,点击左侧系统,然后将证书拖到右侧的空白区域,此时输入该Mac的账号和密码完成导入。
  2. 双击该项目,在新弹出的窗口中点击信任,将使用此证书时的值改为始终信任,然后关闭该窗口,此时输入该Mac的账号和密码完成信任。
  3. 当该证书下方显示此证书已标记为受所有用户信任时,安装完成。

Linux

基于 Ubuntu 20.04 LTS Desktop 测试

1
2
3
4

cp foo.crt /usr/local/share/ca-certificates/foo.crt

update-ca-certificates

显示1 addeddone字样即为添加完成。

Firefox Browser

基于 Firefox For Ubuntu 96.0 测试

由于火狐浏览器采用自己的根证书列表而非系统提供,因此如果生产环境中有使用Firefox还需要在Firefox中再导入一遍。操作方式为首先复制Public.pem到其他文件夹,改后缀名为crt,然后打开Firefox,打开about:preferences#privacy,下滑选择查看证书,在新打开的对话框中选择“证书颁发机构”,点击下方“导入”,选择上述crt文件,在下一个对话框中勾选两个选项后确定即可。

iOS

基于iOS 12.5.1

在Safari上点击下载证书文件*.crt,然后在弹出的对话中选择允许,打开设置通用描述文件,在已下载的描述文件中选择刚才下载的证书,右上角点击安装,随后输入设备密码,在接下来的警告页面中选择两次安装,随后界面上显示绿色字体已验证即为安装成功。

然后返回到通用,选择关于本机,下拉至底证书信任设置,将刚才安装好的证书后面的开关打开即可。

Android

在设置中找到“从存储设备安装证书”,然后选择下载的根证书即可。Android 7 以上应用程序不再信任用户自定义根证书(仅Chrome/Webkit系浏览器信任),Android 11 可以在信任凭据区域选择“安装 CA 证书”。

证书主题(Subject)中字段的含义

字段简称字段名值说明
CN公用名称
(Common Name)
对于 SSL 证书,一般为网站域名;
而对于代码签名证书则为申请单位名称;
而对于客户端证书则为证书申请者的姓名
O单位名称
(Organization Name)
单位名称
C国家 (Country)两位英文大写字母国家代码,
比如中国CN、日本JP、美国US、韩国KR
L城市所有者所在城市
S省份所有者所在省份
E电子邮件 (E-Mail)所有者的电子邮件
OU组织单位

证书格式

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:

  • PKCS#7 Cryptographic Message Syntax Standard
  • PKCS#10 Certification Request Standard
  • PKCS#12 Personal Information Exchange Syntax Standard
  • X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
  • PKCS#7 常用的后缀是: .P7B .P7C .SPC
  • X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
  • X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT
  • .cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
  • .pem跟crt/cer的区别是它以Ascii来表示。
  • pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
  • p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

cer格式转P7X(IIS)

用于微软的相关服务导入,会需要输入一个密码,该密码负责加密证书本身以确保该证书安全,在Windows Server上导入时输入该密码即可。

1
openssl pkcs12 -export -in foo.cer -inkey foo.key -out foo.pfx

证书吊销和吊销列表

吊销证书

执行如下命令吊销证书,如有报错检查默认配置文件是否正确,吊销时需要输入CA证书的加密密码。

1
openssl ca -revoke server.crt

生成吊销列表

执行如下命令生成吊销列表(CRL),如有报错请检查配置文件和crlnumber文件,生成吊销列表时需要输入CA证书的加密密码。

1
openssl ca -gencrl -out server.crl

证书附加用途和示例场景

  1. 根证书
    密钥用法:认可签名,证书签名,CRL签名
    1
    keyUsage=nonRepudiation, keyCertSign,cRLSign
  2. 代码签名
    密钥用法:数字签名
    增强密钥用法:代码签名
    1
    2
    keyUsage=digitalSignature
    extendedKeyUsage=codeSigning
  3. 计算机
    密钥用法:数字签名,密钥协商
    增强密钥用法:服务器验证,客户端验证
    1
    2
    keyUsage=digitalSignature,keyAgreement
    extendedKeyUsage=serverAuth,clientAuth
  4. WEB服务器
    密钥用法:数字签名,认可签名,密钥加密,数据加密,密钥协商
    增强密钥用法:服务器验证
    1
    2
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement
    extendedKeyUsage=serverAuth
  5. 客户端
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:客户端验证
    1
    2
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=clientAuth
  6. 信任列表签名
    密钥用法:数字签名
    增强密钥用法:信任列表签名
    1
    2
    keyUsage=digitalSignature
    extendedKeyUsage=msCTLSign
  7. 时间戳
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:时间戳
    1
    2
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=timeStamping
  8. IPSEC
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:IP安全IKE中级
    1
    2
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=1.3.6.1.5.5.8.2.2
  9. 安全Email
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:安全电子邮件
    1
    2
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=emailProtection
  10. 智能卡登陆
    密钥用法:数字签名,密钥协商,仅仅解密
    增强密钥用法:密钥恢复,加密文件系统,智能卡登陆
1
2
keyUsage=digitalSignature,keyAgreement,decipherOnly
extendedKeyUsage=1.3.6.1.4.1.311.10.3.11,msEFS,1.3.6.1.4.1.311.20.2.2

参考资料

排名不分先后

 上一篇

Linux