我知道这是一个与许多其他问题非常相似的问题,但他们中没有一个给出一个直截了当的答案,或者一个对我有用的问题。
我从加密处得到了两个文件:
我需要将它们转换成crt和key格式,以便在nginx服务器上使用。
我试过:
openssl rsa -outform der -in key.pem -out key.key
和
openssl x509 -outform der -in cert.pem -out cert.crt
但是,在启动nginx时,请获得以下错误:
# service nginx restart
Performing sanity check on nginx configuration:
nginx: [emerg] cannot load certificate "/etc/ssl/nginx/cert.crt": PEM_read_bio_X509_AUX() failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed发布于 2020-07-10 04:27:14
扩展名.pem表示文件格式为PEM (隐私增强邮件)。但是,扩展名没有告诉任何有关文件内容的信息。内容可以是证书、私钥、公钥或其他内容。
扩展名.crt表示文件的内容是证书。但是,扩展名并没有显示任何关于文件格式的信息。文件格式可以是PEM、DER (区分编码规则)或其他什么。如果文件是文本并包含-----BEGIN CERTIFICATE-----,则文件格式为PEM。另一方面,如果文件是二进制文件,则文件格式很可能是DER。
扩展名.key表示文件的内容是私钥。但是,扩展名并没有显示任何关于文件格式的信息。文件格式可能是PEM、DER或其他什么。如果文件是文本并包含-----BEGIN PRIVATE KEY----- (或类似的内容),则文件格式为PEM。另一方面,如果文件是二进制文件,则文件格式很可能是DER。
下面的"https://medium.com/@darutk/illustrated-x-509-certificate-84aece2c5c2e“图表说明了ASN.1 (X.680)、DER (X.690)、BASE64 (RFC 4648)和E 119PEME 220 (RFC 7468)之间的关系。


正如参考文档所述,ssl_certificate和ssl_certificate_key of ngx_http_ssl_module都期望文件格式是PEM。因此,您不必更改cert.pem和key.pem的文件格式,因为它们的文件扩展名.pem表示它们的文件格式已经是PEM。只需在Nginx配置文件中编写如下所示。
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;如果您更喜欢.crt和.key扩展,只需将它们重命名如下。
$ mv cert.pem cert.crt
$ mv key.pem key.key发布于 2020-07-10 00:42:29
当您想使用“让我们加密”设置NGINX时,可以使用应用程序certbot自动完成。
为nginx:安装certbot
关于Ubuntu/Debian:
sudo apt install python-certbot-nginx在Arch linux上:
sudo pacman -S certbot-nginx在Centos上:
sudo yum install epel-release
sudo yum install certbot-nginx然后您需要为您的域创建一个非常简单的配置文件。对于所有上述操作系统,目录应该是相同的。
/etc/nginx/sites-available/example.com在这里,您只需添加以下信息:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:5000 #Example
}
}然后创建符号链接以激活域。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/请记住使用域更改example.com,并将proxy_pass切换到托管文件的服务或目录。
现在您应该重新启动NGINX:
sudo nginx -t如果您的配置中有错误,则此选项将返回一个错误。
如果一切正常,那么重新启动NGINX。
sudo systemctl restart nginx.service现在certbot出现在图片中:
sudo certbot --nginx -d example.com -d www.example.com此时,让我们加密到您的nginx服务器,如果一切正常-这意味着:
然后,您将可以选择容易或安全的访问。我推荐安全的选择。
单击enter后,流程将完成,certbot将生成所有证书文件,并将它们添加到正确的路径中。
/etc/nginx/sites-avalible/example.com中的配置文件将使用所有正确的设置进行更新。
您可能需要再次重新启动nginx。
希望能帮上忙。祝好运
资料来源
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-centos-7
https://stackoverflow.com/questions/62823792
复制相似问题