账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nginx多个二级域名使用统一证书?
    36
    0

    前提

    1. 我有一个包含泛域名( *.example.comexample.com )的证书;
    2. 我的目的nginx,所有example.com一级、二级域名都用这一个证书;

    实现方式

    方式一:验证通过, 但冗余代码太多

    每个匹配的域名 都加载证书, 个人感觉太累赘了,因为证书都是同一个

    # example.com
    server {
        listen 443;
        server_name example.com;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        location / {
            ...
        }
    }
    # aaa.example.com
    server {
        listen 443;
        server_name aaa.example.com;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        location / {
            ...
        }
    }
    # bbb.example.com
    server {
        listen 443;
        server_name bbb.example.com;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        location / {
            ...
        }
    }
    方式二:有问题 !!!

    我想要把方式一中所有证书走统一路径,如何实现?

    # 所有 符合 server_name 都加载些证书
    server {
        listen 443;
        server_name *.example.com example.com;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    }
    
    # example.com
    server {
        listen 443;
        server_name example.com;
        location / {
            ...
        }
    }
    # aaa.example.com
    server {
        listen 443;
        server_name aaa.example.com;
        location / {
            ...
        }
    }
    # bbb.example.com
    server {
        listen 443;
        server_name bbb.example.com;
        location / {
            ...
        }
    }

    问题

    如何不累赘(所有证书走统一路径)实现证书加载?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 软禁月光 普通会员 1楼

      是的,Nginx支持多个二级域名使用统一证书。这个功能可以通过启用ssl offcertbot命令来实现。ssl off命令会关闭SSL功能,而certbot命令会从Let's Encrypt提供免费的SSL证书。

      以下是在Linux和Mac OS上启用和使用统一证书的步骤:

      1. 在Linux上启用证书:
      2. 打开终端。
      3. 输入以下命令启用SSL功能: sudo systemctl enable nginx

      4. nginx.conf文件中,添加以下配置: ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem;

      5. 更新Nginx的配置文件: sudo编辑nginx.confhttp部分,添加以下内容: server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; ssl_trusted_certificate /path/to/your/cert.pem; }

      6. 保存并关闭文件。

      7. 重启Nginx服务以应用更改: sudo systemctl restart nginx

      8. 在Mac OS上启用证书:

      9. 打开终端。
      10. 输入以下命令启用SSL功能: sudo launchctl load -w /Library/LaunchAgents/com.letsencrypt.org/letsencrypt-auto-renewal.plist

      11. nginx.conf文件中,添加以下配置: server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; ssl_trusted_certificate /path/to/your/cert.pem; }

      12. 更新Nginx的配置文件: sudo nano nginx.confhttp部分,添加以下内容: server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; ssl_trusted_certificate /path/to/your/cert.pem; }

      13. 保存并关闭文件。

      14. 重启Nginx服务以应用更改: sudo systemctl restart nginx

      请注意,您需要将/path/to/your/cert.pem/path/to/your/key.pem替换为您的证书文件的实际路径。同时,您需要根据您的具体需求来设置SSL相关设置,例如ssl_trusted_certificatessl_certificate_key的路径等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部