ssl新闻资讯

文档中心

SSL鑷鍙戣瘉涔︿綔鎴愭寚鍗楁墜鎶婃墜鏁欎綘鎵撻€犱笓灞炲姞瀵嗗嚟璇?txt

时间 : 2025-09-27 16:37:49浏览量 : 2

什么是SSL自签发证书?

2SSL鑷鍙戣瘉涔︿綔鎴愭寚鍗楁墜鎶婃墜鏁欎綘鎵撻€犱笓灞炲姞瀵嗗嚟璇?txt

SSL自签发证书(Self-Signed Certificate)就像你自己制作的一张"身份证",而不是由公安局(权威CA机构)颁发的。它同样能实现数据加密传输,但因为缺乏第三方权威认证,浏览器会显示"不安全"警告。

举个例子:你开了一家小店,自己手写了一个"营业执照"贴在门口——这就是自签名证书。而正规CA颁发的证书好比工商局核发的营业执照,大家都认可。

为什么要使用自签发证书?

虽然比不上收费证书权威,但在以下场景非常实用:

1. 内部测试环境:开发团队在测试支付功能时

2. 局域网应用:公司内部OA系统、NAS存储

3. 物联网设备:智能家居设备的初始配置

4. 学习研究:理解SSL/TLS工作原理的最佳实践

我曾为一个客户部署内网监控系统时,使用自签名证书既保证了管理员登录时的加密安全,又省去了购买证书的费用。

OpenSSL创建自签名证书全流程

基础环境准备

首先确保系统安装了OpenSSL工具:

```bash

Ubuntu/Debian

sudo apt-get install openssl

CentOS/RHEL

sudo yum install openssl

```

生成私钥(RSA 2048位)

私钥就像保险箱的钥匙:

openssl genrsa -out server.key 2048

这会产生一个2048位的RSA私钥文件server.key。位数越高越安全但性能开销越大,2048位是当前平衡点。

创建CSR(证书签名请求)

CSR好比是证书的"申请表":

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

执行后会交互式询问信息:

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:Beijing

Locality Name (eg, city) []:Beijing

Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Ltd.

Organizational Unit Name (eg, section) []:IT Dept

Common Name (e.g. server FQDN or YOUR name) []:mysite.localhost

Email Address []:admin@example.com

特别注意:

- Common Name(CN)必须匹配实际访问的域名/IP

- 内部使用时可以用.localhost等保留域名

生成自签名证书

最后一步"自我认证":

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

这会生成有效期365天的server.crt文件。生产环境建议不超过397天(苹果要求)。

Nginx配置示例

有了cert和key后,配置Nginx:

```nginx

server {

listen 443 ssl;

server_name mysite.localhost;

ssl_certificate /path/to/server.crt;

ssl_certificate_key /path/to/server.key;

增强安全性配置

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384...';

ssl_prefer_server_ciphers on;

}

解决浏览器警告问题

访问时会看到类似这样的警告:

![浏览器安全警告](https://example.com/warning.png)

解决方案A:手动添加例外

1. Chrome中点击"高级"

2. 选择"继续前往网站(不安全)"

适用于临时测试场景。

解决方案B:导入为信任根证书(适合内网)

Windows系统:

1. 双击.crt文件 → "安装证书"

2. 选择"本地计算机" → "将所有证书放入下列存储"

3. 选择"受信任的根证书颁发机构"

Linux(CentOS):

sudo cp server.crt /etc/pki/ca-trust/source/anchors/

sudo update-ca-trust extract`

MacOS:

sudo security add-trusted-cert -d -r trustRoot \

-k /Library/Keychains/System.keychain server.crt`

PKI体系下的风险提示

虽然方便但需注意:

1. 中间人攻击风险:没有CA验证身份真实性

→ MITM攻击者可以伪造相同CN的证书

*案例:某企业内网钓鱼攻击利用自签名证书记录键盘输入*

2. 密钥管理问题

→ private.key若泄露等同于门禁卡被复制

*最佳实践*:设置400权限 `chmod 400 server.key`

3. 缺乏吊销机制

→ CA签发的证书可CRL/OCSP吊销

→ 自签名的只能等过期或更换全部密钥对

ACME自动化方案进阶

对于需要大量部署的场景,推荐使用:

- `mkcert`工具(自动生成本地信任的证书)

- OpenVPN的easy-rsa脚本集

- HashiCorp Vault的PKI引擎

例如用mkcert三步完成:

```bash

brew install mkcert

安装

mkcert -install

安装本地CA

mkcert example.com "*.example.com"

泛域名+主域名

SSL/TLS检测工具推荐

部署后建议验证:

1. Qualys SSL Labs测试:

```bash

curl https://api.ssllabs.com/api/v3/***yze?host=yourdomain.com

```

2. OpenSSL客户端测试:

openssl s_client -connect localhost:443 -servername yourdomain.com | openssl x509 -text

3. cipherscan检测支持的加密套件:

./cipherscan yourdomain.com:443

FAQ常见问题解答

Q:为什么Chrome说我的连接不是私密连接?

A:这是正常现象,因为缺少CA认证。需手动添加信任或使用企业PKI体系分发根证。

Q:如何查看我的SAN扩展信息?

A:执行命令查看完整信息:

openssl x509 -in cert.pem -text | grep DNS:

Q:有效期可以设置10年吗?

A:技术上可以但不推荐。主流浏览器已限制最大398天有效期。

通过本文您应该已经掌握从零创建到实际部署的全流程。记住关键原则:"公网用CA、内网可自签、密钥严保管"。对于业务关键系统,建议还是投资购买受信任的商业SSL/TLS证书。

TAG:ssl自签发证书作成,ssl self signed certificate,自己做ssl证书,自制ssl证书无效,自己签发ssl证书,自签ssl证书变为可信任