自签名-TLS/HTTPS-证书

参考 Blog

使用 OpenSSL

安装

在 Archlinux 上为:

1
sudo pacman -S openssl

生成 RSA 私钥

1
openssl genrsa -out ca.key 2048
  • genras, 表明生成用 RAS (一种非对称算法) 加密的私钥
  • -out ca.key, 指定将私钥输出到哪个文件
  • 2048, 指定生成的 RSA 私钥的长度

生成 CSR

CSR, Certificate Signing Request, 是在获取 SSL/TLS 证书时需要生成的一个中间文件. 其用于:

  • 包含申请者的公钥信息
  • 包含申请者的身份信息
  • 用于向 CA 申请签发证书
1
openssl req -new -key ca.key -out ca.csr
  • req, 表明是创建 Certificate Signing Request (CSR)
  • -new, 表明生成新的 CSR, 默认情况下, openssl req 不会生成新的 CSR, 而是会从当前目录查找并读取, 当未找到时, 会:
    1
    2
    Warning: Will read cert request from stdin since no -in option is given
    Warning: Not placing -key in cert or request since request is used
  • -key, 指定用于生成 CSR 的私钥文件, openssl 会从私钥中导出公钥信息写入 CSR 文件中
  • -out, 指定将 CSR 存储在哪个文件

使用私钥和 CSR 生成自签名证书 CRT

CRT, CeRTificate 文件, 是 X.509 类型证书 (一种数字证书标准, 它定义了证书的格式和内容), 包含证书持有者的公钥, 身份信息, 以及 CA 的签名信息 (有效期, 序列号等), 在 SSL/TLS 加密通信中, 服务器会将自己的 CRT 证书文件发送给客户端, 客户端可以使用其中包含的公钥信息来验证服务器的身份.

1
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
  • x509, 指处理 X.509 证书
  • -req, 指定输入类型是一个 CSR 文件
  • -days, 指定证书有效时间
  • -in, 指定输入文件
  • -signkey, 指定用于签发证书的私钥
  • -out, 指定生成的 X.509 证书的存储文件

配合 Apache

比如 Archlinux 上, 修改 /etc/https/conf/extra/httpd-vhosts.conf:

1
2
3
4
5
6
7
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName your.domain.example.com
SSLEngine on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
</VirtualHost>

之后:

1
2
apachectl configtest
apachectl restart

自签名-TLS/HTTPS-证书
http://example.com/2024/05/15/自签名-TLS-HTTPS-证书/
作者
Jie
发布于
2024年5月15日
许可协议