OpenSSL自签证书
· 阅读需 2 分钟
OpenSSL自签证书
第一步:创建私钥
openssl genrsa -out server.key 2048
第二步:创建证书配置文件
创建一个名为 cert.conf
的配置文件:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = Example Company
OU = IT Department
CN = localhost
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = *.localhost
IP.1 = 127.0.0.1
IP.2 = ::1
第三步:生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr -config cert.conf
第四步:生成自签证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -extensions v3_req -extfile cert.conf
第五步:验证证书
# 查看证书详情
openssl x509 -in server.crt -text -noout
# 验证证书和私钥是否匹配
openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
第六步:配置使用
将生成的 server.crt
和 server.key
文件放置到适当的目录,并在应用程序中配置使用:
# 创建证书目录
sudo mkdir -p /etc/ssl/certs
sudo mkdir -p /etc/ssl/private
# 复制证书文件
sudo cp server.crt /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
# 设置权限
sudo chmod 644 /etc/ssl/certs/server.crt
sudo chmod 600 /etc/ssl/private/server.key
在 Nginx 中使用:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
# 其他配置...
}
在 Apache 中使用:
<VirtualHost *:443>
ServerName localhost
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
# 其他配置...
</VirtualHost>
注意事项:
- 自签证书只适用于测试环境或内部网络
- 浏览器会显示证书不受信任的警告
- 生产环境建议使用权威CA签发的证书
- 可以将根证书导入到客户端系统的受信任证书存储中以消除警告