自签名 SSL 证书是由创建者自己(而不是受信任的第三方证书颁发机构)签署的数字证书。它使用自己生成的私钥来创建证书签名请求,然后用自己的私钥对该证书进行签名,从而创建出一个“自签名”的证书。

它的主要价值在于本地开发、测试以及严格控制的内部网络环境,对于任何需要公众访问的服务,必须使用由受信任的证书颁发机构签发的证书(如免费 Let's Encrypt 证书或商业证书)。

如果需要免费SSL可参考文章【ALLinSSL搭建】取代自签名SSL证书。

# 生成自签名SSL证书,请更换下方域名【域名xx.xx.com】及其他信息(如:O)为实际所需域名
sudo openssl genrsa -out server.key 2048
sudo vim csr.conf
[ req ]
default_bits        = 2048
default_md          = sha256
prompt              = no
distinguished_name  = req_distinguished_name
req_extensions      = SAN

[ req_distinguished_name ]
C  = CN
ST = Shanghai
L  = Shnaghai
O  = 公司,如BAIDU
OU = IT
CN = 域名,如xx.xx.com

[ SAN ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = 域名xx.xx.com

sudo openssl req -new -key server.key  -out server.csr   -config csr.conf
sudo vim cert.conf
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = 域名xx.xx.com

sudo openssl x509 -req    -in server.csr  -out server.crt   -signkey server.key  -days 365     -sha256 -extfile cert.conf

# 使用server.crt和server.key即可