自签名SSL证书生成指南
一、概述
1. 简介
SSL 证书(Secure Sockets Layer Certificate),现多称为 TLS 证书(Transport Layer Security Certificate),是一种由受信任的证书颁发机构(CA)签发的数字凭证,用于在客户端(如浏览器、App)与服务器之间建立加密通信通道,并验证服务器身份,从而保障数据传输的机密性、完整性与真实性。
工作流程简述:
- 用户访问
https://example.com; - 服务器将 SSL/TLS 证书发送给客户端;
- 客户端(浏览器)验证证书:
- 是否由可信 CA 签发;
- 域名是否匹配;
- 是否在有效期内;
- 验证通过后,双方通过密钥交换算法(如 ECDHE)协商生成会话密钥;
- 后续所有通信均使用该会话密钥进行对称加密传输,确保高效与安全。
2. 核心作用
|
作用 |
说明 |
|
1. 数据加密保护(核心功能) |
TLS 对传输数据进行端到端加密,防止窃听和中间人攻击(MITM)。即使数据被截获,攻击者也无法解密内容。对登录凭证、支付信息、个人隐私等敏感数据至关重要。 |
|
2. 身份验证(防伪冒) |
证书由可信 CA 签发,浏览器验证其真实性。有效防止钓鱼网站冒充合法服务(如假冒银行、电商),确保用户连接的是真实目标服务器。 |
|
3. 数据完整性保障 |
TLS 协议内置消息认证码(MAC)或 AEAD 加密模式,任何传输中被篡改的数据都会被接收方检测并丢弃,杜绝恶意注入或修改。 |
|
4. 满足合规与行业标准 |
PCI DSS:强制要求所有处理信用卡交易的网站启用 HTTPS;GDPR/HIPAA:要求对个人/健康数据进行加密传输;无有效 SSL 证书的站点无法通过合规审计,可能面临罚款或业务中断。 |
|
5. 提升用户体验与 SEO |
现代浏览器(Chrome、Edge、Firefox)对 HTTP 网站标记为 “不安全”,显著降低用户信任与转化率;Google 明确将 HTTPS 作为搜索排名因素,部署 SSL 有助于提升 SEO 表现。 |
3.常见证书文件格式说明
|
后缀 |
类型 |
说明 |
|
.jks |
密钥库 |
Java KeyStore 格式,包含私钥 + 公钥证书,仅限 Java 应用(如 Tomcat ≤10)。不跨平台,建议避免用于新项目。 |
|
.p12 / .pfx |
密钥库 |
PKCS#12 标准格式,包含私钥 + 公钥证书 + CA 信任链,跨平台通用。 .p12 常用于 Linux/标准环境,.pfx 常用于 Windows,两者完全等价。 |
|
.crt / .cer |
公钥证书 |
X.509 证书,通常为 PEM(Base64 文本)或 DER(二进制)格式。 用于客户端安装以建立信任。.crt 偏好 Linux,.cer 偏好 Windows,功能完全相同。 |
|
.key |
私钥文件 |
通常为 PEM 格式的私钥文件,必须与对应证书配对使用。最高机密!文件权限应设为 600(仅所有者可读写)。 |
二、证书生成与转换
1.生成 JKS 证书(适用于 Tomcat ≤10)
生成服务端 JKS 密钥库(含私钥 + 自签名证书),添加 Subject Alternative Name(SAN),支持多域名/IP,现代浏览器强制要求 SAN。
keytool -genkeypair \
-alias meeting \
-keyalg RSA \
-keysize 2048 \
-validity 3660 \
-keystore meeting.jks \
-storepass '1234qwer' \
-keypass '1234qwer' \
-dname "CN=meeting.com, OU=IT Department, O=INFREE, L=Chengdu, ST=Sichuan, C=CN" \
-ext san=dns:meeting.com,ip:192.168.1.55
从 JKS 导出公钥证书(供客户端信任)
keytool -exportcert \
-alias meeting \
-keystore meeting.jks \
-file meeting.cer \
-storepass '1234qwer' \
-rfc
2.生成 PKCS#12 证书(推荐用于 Tomcat 8.5+)
生成私钥和证书签名请求
# 生成私钥
openssl genrsa -out meeting.key 2048
# 生成带 SAN 的自签名证书
openssl req -new -x509 \
-key meeting.key \
-out meeting.crt \
-days 3660 \
-subj "/C=CN/ST=Sichuan/L=Chengdu/O=INFREE/OU=IT Department/CN=meeting.com" \
-addext "subjectAltName = DNS:meeting.com,IP:192.168.1.55"
打包为 PKCS#12 格式
openssl pkcs12 -export \
-in meeting.crt \
-inkey meeting.key \
-out meeting.p12 \
-name "meeting" \
-passout pass:'P@ssw0rd'
3.客户端安装公钥证书(Windows)
目的:使系统/浏览器信任自签名证书,消除“不安全”警告。
操作步骤:
- 双击 meeting.cer 文件;
- 点击 “安装证书...”;
- 选择 “本地计算机” → 下一步;
- 选择 “将所有证书放入下列存储” → 点击 “浏览”;
- 选择 “受信任的根证书颁发机构” → 确定 → 完成;
- 若提示安全警告,确认导入;
- 重启浏览器,访问 https://meeting.com:8443 应显示安全锁图标
4.CRT转CER
PEM格式适用于现代系统(Windows 10/11、Linux、macOS),DER格式仅在目标设备明确要求二进制证书时使用(如老旧嵌入式系统)。
方法1:直接重命名
如果CRT文件是PEM格式(以-----BEGIN CERTIFICATE-----开头),可以直接修改文件扩展名:
mv certificate.crt certificate.cer
方法2:使用OpenSSL转换
如果CRT是DER格式,需要转换为PEM格式的CER:
openssl x509 -in meeting.crt -inform der -out meeting.cer -outform pem
5.PEM 转 PKCS#12
适用于 Let's Encrypt 等 PEM 证书源。.pem是编码格式,Base64 编码的文本格式,可封装:证书、私钥、CA 链等。安全性取决于内容:若含私钥,则需按私钥级别保护。
openssl pkcs12 -export \
-in fullchain.pem \ # 包含服务器证书 + 中间CA
-inkey privkey.pem \ # 私钥
-out keystore.p12 \ # 输出 PKCS#12
-name "tomcat" \ # 别名
-passout pass:1234qwer # 密码
三、SSL/TLS 协议版本与安全建议
1. 支持的 SSL/TLS 协议版本
|
协议版本 |
状态 |
说明 |
|
TLS 1.3 |
推荐 |
最新标准(RFC 8446),性能高、安全性强,无前向兼容风险。主流浏览器和服务器已广泛支持。 |
|
TLS 1.2 |
安全(当前主流) |
广泛部署,支持现代加密套件(如 ECDHE、AES-GCM)。生产环境最低应启用此版本。 |
|
TLS 1.1 / TLS 1.0 |
已弃用 |
存在已知漏洞(如 BEAST、POODLE),PCI DSS 等合规标准明确禁止使用。 |
|
SSL 3.0 / SSL 2.0 |
禁用 |
严重安全缺陷,必须彻底禁用。 |
最佳实践:
- 服务器配置应仅启用 TLS 1.2 和 TLS 1.3;
- 禁用弱加密套件(如 RC4、DES、MD5、SHA1);
四、其他
1.有效期
- Chrome 浏览器:虽未硬性限制自签名证书有效期,但超过 10 年的证书可能触发更严厉的安全警告(如红色锁 + “您的连接不是私密连接”)。
- 企业环境:部分安全策略、终端防护软件或浏览器扩展会主动拦截长期有效的自签名证书。
- 最佳实践:自签名证书有效期建议 ≤ 2 年(730 天),便于定期轮换与安全管理。
- 本文标签: 安全
- 本文链接: https://xiaolanzi.cyou/article/49
- 版权声明: 本文由卓原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
