如何创建自签名 SSL 证书?

如何创建自签名 SSL 证书?

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

  • 证书
  • 证书密钥

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

答案1

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

答案2

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

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

openssl genrsa -des3 -out server.key 2048

是否输入密码取决于您。如果输入密码,每次使用该证书(重新)启动服务时,您都必须提供密码。另一方面,您可以从安全密钥中创建一个没有密码的“不安全”密钥:

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

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

答案3

其他答案都很好,但如果由于某种原因您没有列出的工具,或者不想使用它们,我发现一个非常简单的开源工具:

minica -domains localhost

这将创建密钥文件minica-key.pem和证书文件minica.pem。创建这些文件的工具只是 Go 语言中的一个文件,没有外部依赖:

https://github.com/jsha/minica

相关内容