我不知道如何在 Windows Vista 上为 Apache 生成自签名 SSL 证书,但我必须这样做。
我怎样才能做到这一点?
答案1
您可以安装适用于 Windows 的 OpenSSL,免费。
安装后,打开命令行(cmd.exe
),转到安装目录并运行适当的openssl
命令。
openssl.exe req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 1000 -nodes
这将生成server.key
(Apache 的私钥)和server.crt
(自签名证书)。请记住保护好您的私钥。
安装到 Apache2(在 Linux 中):
sudo a2enmod ssl
sudo a2ensite default-ssl
nano /etc/apache2/sites-enabled/default-ssl
将正确的路径更改为以下行(新密钥和证书的路径):
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.crt
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
保存并运行/etc/init.d/apache2 restart
(或者如果您的发行版使用不同的方式,则不是该命令)。
答案2
我假设你需要这个证书来进行本地开发。如果是这样,有一个非常有用的工具可以做到这一点,叫做认证。它会生成证书并将其添加到您的本地证书中,这样它就会变得可信。我发现它非常容易使用,因为我只需在 shell 中输入两个命令就可以实现所有这些。
此页面有有关如何安装的说明: https://github.com/FiloSottile/mkcert
如果你有 choco,你可以使用
choco install mkcert
安装后,您需要安装其本地权威证书,以便它能够被信任。
mkcert -install
这将弹出一个要求确认的窗口。
之后,您可以继续生成证书。该命令非常简单,只需要您希望此证书在哪些域中受信任。就我而言,我希望它在 localhost 中进行开发,因此我将输入:
mkcert localhost 127.0.0.1 ::1
它会创建两个 .pem 文件,这是 Apache 所需要的。
将这两个文件复制到托管您网站的机器上。Linux 上 SSL 证书的典型目录是 /etc/ssl/certs/
正如 Olli 提到的,您可以在 Linux 上运行以下命令来启用 ssl:
sudo a2enmod ssl
sudo a2ensite default-ssl
将 default-ssl.conf 文件中的以下几行更改为证书的名称。该文件通常位于以下位置之一:
- /etc/apache2/sites-enabled/
- /etc/apache2/mods 已启用/
应该有一个 VirtualHost 指令,包含以下几行:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.crt
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
更改这些行中的路径。第一行必须指向没有“-key.pem”后缀的文件,第二行有后缀。不用担心 .crt/.key/.pem 之间的扩展名差异,mkcert 会输出两个“.pem”文件,它们没问题。
现在,您需要重新启动服务器以使其选择证书。为此,您可以键入以下内容之一。它会根据发行版的不同而变化:
/etc/init.d/apache2 restart
sudo systemctl restart apache2
sudo systemctl restart httpd2
sudo systemctl restart httpd
希望能帮助到你!