V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lemzon201314
V2EX  ›  SSL

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

  •  
  •   lemzon201314 · 2017-04-06 22:54:40 +08:00 · 6796 次点击
    这是一个创建于 2790 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境: 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.

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

    还有个坑, XP 永远只认服务器上第一个 SSL 证书
    satifanie
        13
    satifanie  
       2017-04-07 07:56:50 +08:00
    证书合并的时候,应该把自己的域名签发的证书放到最上面,然后是中级 最后是根证书
    ryd994
        14
    ryd994  
       2017-04-07 09:00:25 +08:00 via Android
    @49degree 这个应该和本问题无关
    就算浏览器不认, Nginx 还是认的
    lemzon201314
        15
    lemzon201314  
    OP
       2017-04-07 10:31:20 +08:00 via Android
    现在是 Nginx 无法重启,而不是浏览器有问题
    lemzon201314
        16
    lemzon201314  
    OP
       2017-04-07 10:33:30 +08:00 via Android
    证书错误是不是原来配置第一个 SSL 时,添加了权限?
    openssl rsa -in ssl.key -out /root/ssl.key
    chmod 600 /root/ssl.key
    是不是这里错了?
    lonelinsky
        17
    lonelinsky  
       2017-04-07 10:40:11 +08:00
    X509_check_private_key:key values mismatch 报错是这个应该不是权限的问题,而是 key 和证书不匹配,看看是不是申请证书的 CSR 并不是用的这个 key ? 仅猜测
    lonelinsky
        18
    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
        19
    Rezark  
       2017-04-07 13:57:50 +08:00
    公私钥不匹配!
    lemzon201314
        20
    lemzon201314  
    OP
       2017-04-07 15:44:24 +08:00
    现在我弄好了,
    我重新上传了.crt 和.key
    没有重命名,接着重启 nginx 就成功了,现在不明白是什么原因
    lemzon201314
        21
    lemzon201314  
    OP
       2017-04-08 10:12:45 +08:00
    @lemzon201314 写好了笔记 多谢各位指点了 https://www.lemzon.me/index.php/archives/19/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1175 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:05 · PVG 07:05 · LAX 15:05 · JFK 18:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.