谁能建议一种现代的方式来生成将在localhost上实现的自签名证书,而Chrome和Mozilla会接受这种方式?
我尝试了openssl一代,但是Mozilla抱怨发行者不受信任。
Centos 7,Nginx
谁能建议一种现代的方式来生成将在localhost上实现的自签名证书,而Chrome和Mozilla会接受这种方式?
我尝试了openssl一代,但是Mozilla抱怨发行者不受信任。
Centos 7,Nginx
Answers:
警告:在进入运营自己的证书颁发机构的雷区之前,您可能需要研究安全隐患!
但是,如果需要,请继续阅读快速而肮脏的CA,它会在https://localhost/
没有警告消息的情况下为您提供...
创建以下文本文件:
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
另存为,root.cnf
然后使用以下命令生成请求:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
这将创建您的Root CA证书(root.cer
)和您root.key
必须保持私有的Root CA私钥()。它将提示您输入私钥的密码-确保您选择一个强密码。
现在为服务器证书创建一个配置文件:
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
将其另存为server.cnf
并使用以下命令生成请求:
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
上面的代码将生成另一个server.key
您必须保护的私钥()。在这种情况下,密钥不受密码保护,但是您可以通过删除该-nodes
选项来添加密码。
最后,使用新的根CA和server.cnf
文件扩展名对请求进行签名(为方便起见):
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
注意:为该-set_serial
选项选择任意随机数。
它将要求您输入生成根CA时输入的密码。
server.cer
将生成服务器证书()。
现在,将Root CA证书(root.cer
)添加到Firefox的trust-anchor存储中,以便浏览器信任您的新CA。
通过将OpenSSL用作具有以下内容的临时Web服务器来运行测试:
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
注意:如果您已经在端口443上运行了服务器,则可能会出错。在这种情况下,请停止正在运行的服务器,或者通过将结尾更改为(例如),将上面的端口号更改为另一个未使用的端口。 -accept 8443 -www
当您导航到Firefox https://localhost
(或https://localhost:8443
如果您更改了上面的端口号)时,现在应该看不到任何警告,并且会看到一个OpenSSL安装可以提供的密码列表。
对结果满意后,将server.key
和添加server.cer
到原始Web服务器并进行相应配置。
stinguished_name
应该是distinguished_name