实时发布最新的行业新闻,让您及时了解行业的风向

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

浏览: 作者: 来源: 时间:2024-11-22 分类:
有时需要生成一张自签名证书用于本地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

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 ]

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上找到。

更多关注微信公众号:jiuwenwang