当前位置:首页 > 网站技术>宝塔面板二级子目录开启SSL证书

宝塔面板二级子目录开启SSL证书

网站技术 / 星之宇 / 2020-3-1 8:40 / 浏览:3866 / 评论:16

目前HTTPS是大势所趋,本站也上了HTTPS,但是过程中出现了一些问题,宝塔面板默认提供了SSL管理功能,并且可以在线申请SSL证书,一键部署HTTPS比较方便,但是遗憾的是宝塔面板二级子目录无法直接开启SSL证书的问题。因为我使用的是nginx,所以打算手动开启,而且也做到了。


一、申请域名证书

1、现在大部分网站都提供域名型免费版(DV)证书申请,我就不详细介绍了。

2、申请成功后,下载nginx证书即可。


二、安装证书

1、上传到宝塔,路径如www/server/panel/vhost/cert/www.myxzy.com (www.myxzy.com主域名的证书文件夹)

2、宝塔面板,网站,主域名的网站点开设置,通过手工修改配置文件来实现配置SSL证书。找到子目录的配置文件位置,一般都有#BINDING-cdn.myxzy.com-START的字样,域名换成自己的子域名,如果主域名已经开启了SSL,子域名也会直接开启。只要在配置文件root目录(root /www/wwwroot/www.myxzy.com/cdn)下面增加以下配置文件即可。

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    ssl_certificate    /www/server/panel/vhost/cert/www.myxzy.com/cdn.myxzy.com.crt;
    ssl_certificate_key    /www/server/panel/vhost/cert/www.myxzy.com/cdn.myxzy.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;
    #SSL-END
已经去掉了强制跳转HTTPS,这边去掉是为了CDN加速,因为开启了之后可能会出问题。

增加安全性设置,可以使用以下的配置文件:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    ssl_certificate    /www/server/panel/vhost/cert/www.myxzy.com/cdn.myxzy.com.crt;
    ssl_certificate_key    /www/server/panel/vhost/cert/www.myxzy.com/cdn.myxzy.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;
    #SSL-END

宝塔面板保存直接生效,不用重启nginx。

目前有 16 条评论

    • QQ
    • 填好QQ,点击获取自动填写昵称和邮箱
    • 昵称
    • 邮箱
    • 网址

    游客1885468018 2020-05-06 13:427楼

    博主你好,你的这种方法好像不会自动更新证书?评论

    星之宇 2020-05-06 13:47

    @游客1885468018:手动更新证书,1年一次也嫌麻烦的话,那就没办法了。回复

    游客1885468018 2020-05-06 18:16

    @星之宇:我一直都是用let's,只能3个月好麻烦,博主用的是什么1年证书?回复

    星之宇 2020-05-06 18:17

    @游客1885468018:腾讯云的证书,免费的回复

    Soulxyz 2020-03-18 17:086楼

    折腾好久,最后OK了。感谢博主,但是我的HTTPS证书路径是/etc/letsencrypt/live/(XXX).(XXX).top/
    原先在etc下找不到这个目录,但是在手动输入框里输入这个目录并回车是可以进去的,复制了一份原来证书的文件,修改配置文件就行了。
    本来想两个证书路径都指向那个证书的,结果发现不行。评论

    星之宇 2020-03-18 17:08

    @Soulxyz:嗯。这个是没办法的办法,就当作2个证书来处理就好。回复

    Soulxyz 2020-03-18 16:395楼

    您好,还有一个问题,如果原来是泛解析证书,如*.xxx.top 该如何处理呢评论

    星之宇 2020-03-18 16:41

    @Soulxyz:如果是泛域名证书,好像可以直接生效的,如果没有生效每个子域名指向到主域名的证书就好。回复

    Soulxyz 2020-03-18 16:46

    @星之宇:我这里会显示Error 525 SSL handshake failed 极其难受 博主有其他联系方式嘛 方便的话能否帮我配置一下下回复

    星之宇 2020-03-18 16:48

    @Soulxyz:那就在复制一份证书,按照我的方法放在子目录下面就可以了。回复

    Soulxyz 2020-03-18 16:55

    @星之宇:ERROR:
    nginx: [emerg] BIO_new_file("/www/server/panel/vhost/cert/api.yyqiang.top/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/www/server/panel/vhost/cert/api.yyqiang.top/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
    nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

    貌似说找不到这个文件
    我主站的SSL配置有一行是这样的:
    ssl_certificate    /etc/letsencrypt/live/blog.yyqiang.top/fullchain.pem
    在服务器根目录找不到这个文件夹,不知道在哪里回复

    Soulxyz 2020-03-18 16:104楼

    哦 抱歉 没有读完 已经看到如何开启强制Https了评论

    Soulxyz 2020-03-18 16:063楼

    您好,我想开启子目录的强制SSL,因为节点在国内,不走CDN,如何操作呢?评论

    星之宇 2020-03-18 16:09

    @Soulxyz:添加配置文件,一个是https,还有一个如下
        if ($server_port !~ 443){
            rewrite ^(/.*)$ https://$host$1 permanent;
        }回复

    今日新鲜事 2020-03-04 15:112楼

    文章不错支持一下吧评论

    Mark 2020-03-01 16:061楼

    学习了评论