我想为我的测试环境创建SSL证书

时间:2013-06-05 08:27:27

标签: ssl https openssl

是否有人有一个方便的脚本来生成SSL证书,以便生成CA证书和服务器证书。更重要的是,以我可以将CA证书导入我的受信任根列表(我的Windows系统)的方式创建它,以便浏览器不会将该站点标记为不受信任。

我使用以下脚本来执行此操作,但我无法说服浏览器信任该证书。 我非常感谢这里的任何帮助。

# 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

此致 卡什亚普

2 个答案:

答案 0 :(得分:6)

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

Root - > CA - >服务器

CA和Root证书可以进入受信任的证书列表。然后,信任该列表的浏览器也将信任由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有自己的列表。

答案 1 :(得分:0)

您是否拥有可信的CA证书? 您正在生成自签名证书,该证书始终被浏览器视为不受信任。

相关问题