2013-06-05 40 views
4

有没有人有一个方便的脚本生成SSL证书,使得它产生的CA证书和服务器证书。更重要的是,创建它可以将CA证书导入我的受信任根列表(我的Windows系统),以便浏览器不会将该网站标记为不可信。我想创建SSL sertificates为我的测试环境

我用下面的脚本来做到这一点,但我无法说服我的浏览器信任的证书。 我非常感谢这里的任何帮助。

# Generate a private key 
openssl genrsa -des3 -out server.key 1024 

# Generate a CSR (Certificate Signing Request) 
openssl req -new -key server.key -out server.csr 

# Remove Passphrase from Key 
cp server.key server.key.org 
openssl rsa -in server.key.org -out server.key 

# Generating a Self-Signed Certificate 
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

问候, 卡什亚普

+0

您使用的是什么浏览器? IE和Chrome使用Windows可信证书列表,但Firefox拥有自己的可信证书列表。 – gtrig

回答

0

你有一个信任的CA证书? 您正在生成一个始终被浏览器视为不受信任的自签名证书。

+0

嗯..这可能解释它 - 浏览器将“自签名”证书标记为不可信。那么,有没有办法让人们不必购买证书就可以进行测试? – Kashyap

+0

这不完全正确。如果将自签名证书添加到Windows可信证书列表中,那么查看该可信列表的浏览器也将信任该证书以及证书已签名的任何证书。 – gtrig

+0

@Kashyap作为测试目的gtrig说,你可以添加证书到Windows信任的证书列表后,这个IE认为你的证书是可信的但不确定Chrome,在Firefox中,你可以添加它作为例外。 –

6

你的脚本只生成一个证书,自签名证书。通常,自签名证书称为根证书。这可以用作CA证书,但通常中间CA证书由Root私钥创建和签名。此中间CA证书随后用于签署服务器证书。所以,你有这样的层次:

根 - > CA - >服务器

的CA和根证书可以进入受信任的证书列表。然后,信任该列表的浏览器也将信任由CA或Root实体签署的任何证书。

你不必有这样的层次......你可以使用根证书的CA,跳过中间证书。您也可以使用1个自签名证书作为根/服务器证书。请参阅article (Trusting self-signed certificates)

不过,假设你有这样的层次,这里有一些OpenSSL的命令产生必要的密钥和证书:

# 1. Create Root private key 
openssl genrsa -out root.key 2048 

# 2. Create self-signed Root certificate 
openssl req -new -key root.key -x509 -out root.crt -days 5000 -sha256 

# 3. Create CA private key 
openssl genrsa -out ca.key 2048 

# 4. Create CA CSR 
openssl req -new -key ca.key -out ca.csr -days 5000 

# 5. Sign and create CA certificate 
openssl x509 -req -in ca.csr -CA root.crt -CAkey root.key -out ca.crt -set_serial 2 -days 5000 -sha256 

# 6. Create Server private key 
openssl genrsa -out server.key 2048 

# 7. Create Server CSR 
openssl req -new -key server.key -out server.csr -days 5000 

# 8. Sign and create Server certificate 
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -set_serial 3 -days 5000 -sha256 

更改键位,有效天#,序列号,并添加V3扩展为你觉得合适。

还记得,不同的浏览器有自己信任的不同列表。 Chrome和IE使用Windows默认列表。 Firefox有自己的列表。

+0

非常感谢你的详细脚本。我只需要确保一件事......在FQDN中提到“localhost”,事情就顺利进行了! – Kashyap