自签名证书和私有CA签名的证书的区别 自签名证书有什么作用


自签名证书和私有CA签名的证书的区别 自签名证书有什么作用


[ 虎娃导读 ] 有时需要生成一张自签名证书用于本地Web服务器来实现HTTPS 。一,以下为创建自签名证书的基本步骤:
1) 创建根证书
创建根证书需要的RSA私钥:
openssl genrsa -aes256 -out ca.key.pem 4096
根据RSA私钥创建根证书:
openssl req -config openssl_ca.cnf -key ca.key.pem -new -x509 -days 7300 -sha256 -extensions v3_ca -out ca.cert.pem
生成用于Windows系统的PFX格式的证书:
openssl pkcs12 -export -out ExampleRootCA.pfx -inkey ca.key.pem -in ca.cert.pem
2)创建中级证书
为了根证书安全,一般会创建中级证书并用根证书签名 。
创建中级证书需要的RSA私钥:
openssl genrsa -aes256 -out intermediate.key.pem 4096
根据RSA私钥创建中级证书:
openssl req -config openssl_int.cnf -new -sha256 -key intermediate.key.pem -out intermediate.csr.pem
使用根证书为中级证书签名:
openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md sha256 -in intermediate.csr.pem -out intermediate.cert.pem
生成用于Windows系统的PFX格式的证书:
openssl pkcs12 -export -out ExampleIntermediateCA.pfx -inkey intermediate.key.pem -in intermediate.cert.pem
3) 创建服务器证书
创建服务器证书需要的RSA私钥:
openssl genrsa -aes256 -out www.example.com.key.pem 2048
创建www.example.com的证书:
openssl req -config openssl_int.cnf -key www.example.com.key.pem -new -sha256 -out www.example.com.csr.pem
使用中级证书为服务器证书签名
openssl ca -config openssl_int.cnf -extensions server_cert -days 375 -notext -md sha256 -in www.example.com.csr.pem -out www.example.com.cert.pem
生成用于Windows系统的PFX格式的证书:
openssl pkcs12 -export -out www.example.com.pfx -inkey www.example.com.key.pem -in www.example.com.cert.pem
4) 导入证书
通过MMC打开本地计算机的证书管理窗口,首先导入根证书和中级证书到各自分区,然后再IIS里导入服务器证书 。
5) IIS绑定https
选择目标站点,编辑绑定,新增https绑定并选择服务器证书即可 。
6) 修改HOSTS文件
因为我们申请的是www.example.com域名的证书,需要修改系统的HOSTS文件,添加以下对应关系:
127.0.0.1 www.example.com
7) 浏览器测试
直接在浏览器中输入:https://www.example.com/,观察是否能顺利访问并出现https的小绿锁标志 。
二,可能碰到的问题:
1) Subject Alternative Name Missing
解决此问题的方法是修改openssl_int.cnf文件,添加如下alt_names配置项,并设置subjectAltName为@alt_names
[ alt_names ]
【自签名证书和私有CA签名的证书的区别 自签名证书有什么作用】DNS.1 = www.example.com
[ server_cert ]
# Extensions for server certificates (`man x509v3_config`).
basicConstraints = CA:FALSE
nsCertType = server
nsComment = “OpenSSL Generated Server Certificate”
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
修改完成后,然后重新生成服务器证书即可 。根证书和中级证书不需要重新生成 。
2) 无效的COMMON NAME
解决无效CN的方法是:DNS.1和Common Name配置为相同的www.example.com,而不是127.0.0.1,然后在system32/drivers/etc/hosts文件里添加:
127.0.0.1 www.example.com
以上内容来自:细说 CA 和证书
文中使用到的cnf文件可以在github上找到 。

    推荐阅读