一台服务器如何配置多个 SSL 证书?

2017-04-06 22:54:40 +08:00
 lemzon201314

环境: LNMP vhost

状态:已经在服务器上面搭建了两个不同顶级域名的网站,其中一个已经使用了 SSL ,现在想让第二个网站也 https 访问。

按照这篇文章的方法

https://baohua.me/middleware/nginx/nginx-single-ip-address-to-configure-multiple-ssl-certificates/

现在是这样的

[root@CentOs ~]# /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.9.9

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)

built with OpenSSL 1.0.1h 5 Jun 2014

TLS SNI support enabled

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-openssl=../openssl-1.0.1h/

但是修改第二个网站的 conf 文件之后

conf 如下:

server

{

listen 80;

server_name xxx.domain.com;

return 301 https://xxx.domain.come$request_uri;

}

server

{

    listen 443 ssl;

    #listen [::]:80;

	ssl on;

    ssl_certificate /root/xxx.domain.com.crt;

    ssl_certificate_key /root/xxx.domain.com.key;  
 
    server_name xxx.domain.com;

    index index.html index.htm index.php default.html default.htm default.php;

    .....

然后重启 Nginx 报错

[root@CentOs ~]# service nginx restart

Stoping nginx... nginx: [emerg] SSL_CTX_use_PrivateKey_file("/root/xxx.domain.com.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch) failed. Use force-quit

Starting nginx... nginx (pid 29963 29962) already running.

6821 次点击
所在节点    SSL
21 条回复
lemzon201314
2017-04-06 23:01:24 +08:00
求大佬指点, O(∩_∩)O 谢谢
Pengg
2017-04-06 23:03:04 +08:00
第二个 conf 配置:
server{
listen 443; # 去掉 ssl
# ...
}
lemzon201314
2017-04-06 23:05:25 +08:00
@Pengg 仍然不行
fsgmhoward
2017-04-06 23:11:37 +08:00
他是告诉你 key 有问题 conf 没有问题
AirSc
2017-04-06 23:14:02 +08:00
lemzon201314
2017-04-06 23:14:36 +08:00
@fsgmhoward 如何解决问题呢?谢谢
caola
2017-04-07 01:22:39 +08:00
ryd994
2017-04-07 03:24:50 +08:00
确认格式正确
不需要 ssl on ,这个选项已经官方废弃了
zhihaofans
2017-04-07 03:45:48 +08:00
证书有问题
Showfom
2017-04-07 04:57:51 +08:00
@lemzon201314 问给你证书的人
RobertYang
2017-04-07 07:43:49 +08:00
错误是证书错误啊,配置没问题
49degree
2017-04-07 07:55:45 +08:00
要依照 域名证书 -> 中间证书 -> 根证书 的顺序串联为证书链,才能被绝大多数浏览器信任
参考: https://doc.ssl.do/page/install-nginx/

还有个坑, XP 永远只认服务器上第一个 SSL 证书
satifanie
2017-04-07 07:56:50 +08:00
证书合并的时候,应该把自己的域名签发的证书放到最上面,然后是中级 最后是根证书
ryd994
2017-04-07 09:00:25 +08:00
@49degree 这个应该和本问题无关
就算浏览器不认, Nginx 还是认的
lemzon201314
2017-04-07 10:31:20 +08:00
现在是 Nginx 无法重启,而不是浏览器有问题
lemzon201314
2017-04-07 10:33:30 +08:00
证书错误是不是原来配置第一个 SSL 时,添加了权限?
openssl rsa -in ssl.key -out /root/ssl.key
chmod 600 /root/ssl.key
是不是这里错了?
lonelinsky
2017-04-07 10:40:11 +08:00
X509_check_private_key:key values mismatch 报错是这个应该不是权限的问题,而是 key 和证书不匹配,看看是不是申请证书的 CSR 并不是用的这个 key ? 仅猜测
lonelinsky
2017-04-07 10:44:03 +08:00
openssl x509 -noout -modulus -in certificate.crt | openssl md5

openssl rsa -noout -modulus -in privateKey.key | openssl md5

可以用这个方法检验证书和 private_key 是否匹配,摘录自 @AirSc 提到的回答
Rezark
2017-04-07 13:57:50 +08:00
公私钥不匹配!
lemzon201314
2017-04-07 15:44:24 +08:00
现在我弄好了,
我重新上传了.crt 和.key
没有重命名,接着重启 nginx 就成功了,现在不明白是什么原因

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/353062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX