跳到主要内容

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.crtserver.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>

注意事项:

  1. 自签证书只适用于测试环境或内部网络
  2. 浏览器会显示证书不受信任的警告
  3. 生产环境建议使用权威CA签发的证书
  4. 可以将根证书导入到客户端系统的受信任证书存储中以消除警告