如何创建自签名SSL证书?


64

我已经在网络服务器上设置了SSL,现在需要两个文件:

  • 证书
  • 证书密钥

如何创建用于测试目的的自签名证书?

Answers:


93

Ubuntu,甚至是“最小”的味道,都预装了ssl-cert软件包,这意味着您无需执行任何操作。

您要查找的文件已经在您的系统上:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


高级:

如果出于某种原因需要创建新证书,则可以运行

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

如果要更改证书的到期日期,可以在处操作make-ssl-cert脚本/usr/sbin/make-ssl-cert。像124左右有一行类似于:

openssl req -config $TMPFILE -new -x509 -nodes \ 

您可以在其中添加-days参数来更改到期日期:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

可以在的手册页中req找到更多选项。


10
默认情况下,ubuntu-server 12.04(AMI云映像)未安装ssl-cert。但是,一旦安装了ssl-cert-/etc/ssl/certs/ssl-cert-snakeoil.pem将自动可用。
斯坦,2012年

make-ssl-cert从获取要使用的密钥长度(和其他设置)/usr/share/ssl-cert/ssleay.cnf
蒂姆·史密斯

在尝试在本地无所事事的VM实例中测试网站时,我想让Google Chrome看起来像是完全正常的证书。我必须首先www.test.mydomain.com使用hostnameVM CLI中的命令将VM的主机名设置为与测试url(例如)匹配。然后根据您的建议重新生成密钥,使用--force-overwrite,密钥的通用名称(CN)与测试URL匹配。最后,在主机上,将密钥安装为“受信任的根证书颁发机构”(在Chrome的“设置” /“高级”中),这给了我梦green以求的绿色地址栏。
Buttle Butkus

1
我9岁的证书停止了升级到debian 10的工作,因此该make-ssl-cert命令为我节省了一天的时间!
Jayen

23

如前所述,Ubuntu Server附带了必要的工具。根据服务器的版本,您必须查找特定的文档。我将尝试总结当前LTS(12.04)的自签名证书生成过程。

首先,您为证书签名请求(CSR)生成密钥:

openssl genrsa -des3 -out server.key 2048

是否输入密码取决于您。如果这样做,每次(重新)使用该证书启动服务时,都必须提供密码短语。Otoh您可以创建一个“不安全”密钥,而无需从安全密钥中输入密码:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

现在,您将根据密钥创建CSR。使用CSR和密钥,可以生成自签名证书:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

最后一步包括在Debian / Ubuntu中通常在/etc/ssl以下位置安装证书和密钥:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

最后,必须相应地配置使用证书/密钥的应用程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.