我有一个 RaspberryPi,我想在上面托管 Owncloud。所以我跟着本教程除了 SSL 部分之外,它运行良好。我不想使用自签名。
我设置了自己的子域,它无需 SSL 即可运行,即使在我的家庭网络之外也可以运行。我没有尝试自签名证书。
我使用的命令创建了证书(可以在这个教程):
sudo openssl req -new -newkey rsa:4096 -nodes -out /etc/nginx/cert/my_example_com.csr -keyout /etc/nginx/cert/my_example_com.key -subj "/C=NL/ST=none/L=none/O=none/OU=none/CN=my.example.com"
文件
- /etc/nginx/cert/my_example_com.csr
- /etc/nginx/cert/my_example_com.key
在 nginx 中:/etc/nginx/站点可用/默认
## other stuff from tut
server {
listen 80;
server_name my.example.com;
return 301 https://$server_name$request_uri; # enforce http
}
server {
listen 443 ssl;
server_name my.example.com;
ssl_certificate /etc/nginx/cert/my_example_com.csr;
ssl_certificate_key /etc/nginx/cert/my_example_com.key;
## other stuff from tut
在我提交.csr内容 我向我的网络托管商收到了一个包含 3 个文件的 zip 文件:
- my_example_com.cert
- CA_Root证书
- CA_中间证书
我尝试了所有 3 个文件的ssl_certificate
值,但它们不起作用。
所以我用谷歌搜索并找到多个来源说我需要按某种顺序合并这些文件。(来源,来源,来源)
但在我的例子中,文件名都有点不同,这很令人困惑。
有些资料谈到了.crt
文件,有些谈到了.pem
,但我得到的是.cert
。文件扩展名是否重要?
有人知道我应该如何设置(/合并?)这些文件才能让我的网站在 ssl 上运行吗?
注意:这是我第一次使用 nginx 或 ssl-certificates
答案1
$ cat www.example.com.crt bundle.crt > www.example.com.chained.crt
The resulting file should be used in the ssl_certificate directive:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.chained.crt;
ssl_certificate_key www.example.com.key;
...
}
答案2
主要故障是 ISP 的调制解调器。之后我发现是:
sudo cat my_example_com.cert CA_Intermediate.cert CA_Root.cert >> bundle.cert
主要建议这里