Brave
@47c132035ed7a1105a867946b99d67af 网络安全与大数据研究小组 公开
讨论 OpenSSL 与自签名证书:构建主权个人的私有安全加密体系

OpenSSL 与自签名证书:构建主权个人的私有安全加密体系

在数字化办公和个人项目开发中,HTTPS 和加密通信已成为标配。而实现这一切的幕后英雄,往往是 OpenSSL。本文将带你了解什么是 OpenSSL,以及如何利用它制作属于自己的“通行证”——自签名证书


一、 什么是 OpenSSL

OpenSSL 是一个功能极其强大的开源加密工具库。它不仅实现了 SSL/TLS 协议,还包含了一套完整的加密算法库和命令行工具。

简单来说,OpenSSL 就像是一个数字世界的全能瑞士军刀,它的主要职责包括:

  1. 加密通信:为 Nginx、Apache 等 Web 服务器提供 HTTPS 协议支持。
  2. 生成密钥:创建公钥(Public Key)和私钥(Private Key)对。
  3. 证书管理:生成证书请求 (CSR)、查看证书信息、转换证书格式。
  4. 数据加解密:对敏感文件进行对称或非对称加密。

二、 什么是自签名证书

通常,我们在浏览器访问网站时,证书是由受信任的第三方 CA 机构(如 DigiCert、Sectigo)颁发的。

自签名证书 (Self-signed Certificate) 则是指由开发者或公司自己签发的证书。

  • 优点:完全免费、即刻生成、有效期可控。
  • 缺点:浏览器默认不信任,会弹出“您的连接不是私密连接”的安全警告。
  • 适用场景:本地开发环境测试、内网服务通讯、个人实验性项目。

三、 实战:三步生成自签名证书

使用 OpenSSL 生成自签名证书通常遵循“密钥 -> 签名请求 -> 证书”的流程。

1. 生成私钥 (Private Key)

私钥必须妥善保管,它是证书安全性的核心。

openssl genrsa -out server.key 2048

2. 生成证书签名请求 (CSR)

CSR 包含了你的域名、组织等信息。

openssl req -new -key server.key -out server.csr

执行后会要求你填写国家 (C)、省份 (ST)、城市 (L)、公司 (O)、域名 (CN) 等信息。

3. 签发自签名证书 (CRT)

将 CSR 文件“自己签给自己”生成最终的证书文件:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • -days 365:代表证书有效期为一年。
  • server.crt:这就是你最终要在 Web 服务器中配置的证书公钥。

四、 如何在开发中使用

生成 server.crtserver.key 后,你可以将它们配置在你的服务中。例如在 Nginx 中:

server {
    listen 443 ssl;
    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;
}

提示:为了消除浏览器的安全报警,你可能需要手动将生成的 server.crt 导入到系统的“受信任的根证书颁发机构”中。

总结

OpenSSL 是开发者必须掌握的基石工具,而自签名证书则是我们在非生产环境下低成本实现加密通讯的最佳方案。无论你是搭建私有云盘,还是调试 Web 接口,这一套流程都能为你提供最基础的安全保障。