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

目前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。

  • 下载列表

目前有 12 条评论

avatar

Soulxyz  2020-03-18 17:08 6楼

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

星之宇  2020-03-18 17:08

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

Soulxyz  2020-03-18 16:39 5楼

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

星之宇  2020-03-18 16:41

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

Soulxyz  2020-03-18 16:46

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

星之宇  2020-03-18 16:48

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

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
在服务器根目录找不到这个文件夹,不知道在哪里 回复
avatar

Soulxyz  2020-03-18 16:10 4楼

哦 抱歉 没有读完 已经看到如何开启强制Https了 回复
avatar

Soulxyz  2020-03-18 16:06 3楼

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

星之宇  2020-03-18 16:09

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

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

文章不错支持一下吧 回复
avatar

Mark  2020-03-01 16:06 1楼

学习了 回复
昵称
邮箱
主页
提交