经验分享:宝塔面板开启HTTPS并自定义证书

HTTPS可以对网页传输的数据进行加密,并提供可靠的验证方法,保证了传输机密数据(如密码,身份证号码等)的安全性,同时防止第三方劫持和插入广告。可是道高一尺魔高一丈,部分不良ISP已经开发出了“HTTPS降级劫持”这种操作,可以把用户的https请求降级为http页面,对于部分强制https的网站,甚至还有反代出http的界面这种丧心病狂的操作。因此HTST(HTTP Strict Transport Security)应运而生,HSTS是一个http响应头,告诉浏览器我的网站必须要使用https,但是如何把HSTS传递给用户呢?一般来说有两种方案

1.网页自带https响应头,这样成功加载一次hsts响应头后就不会被劫持。但是这种方案也有可能被http劫持
2.使用HSTS-Preload方案,浏览器本身自带使用hsts的域名,强制使用https,可以说是目前最安全的方案了。不过HSTS-preload加入很慢,而且要求高。
我们可以看https://hstspreload.org/的要求:

  1. Serve a valid certificate.
  2. Redirect from HTTP to HTTPS on the same host, if you are listening on port 80.
  3. Serve all subdomains over HTTPS.
    • In particular, you must support HTTPS for the www subdomain if a DNS record for that subdomain exists.
  4. Serve an HSTS header on the base domain for HTTPS requests:
    • The max-age must be at least 31536000 seconds (1 year).
    • The includeSubDomains directive must be specified.
    • The preload directive must be specified.
    • If you are serving an additional redirect from your HTTPS site, that redirect must still have the HSTS header (rather than the page it redirects to).

我们看其中最重要的要求:

max-age,代表接下来的时间内都必须要用https
includeSubDomains,代表子域名也必须使用https

那么问题来了,宝塔面板默认可是http的,即使开启了面板ssl也是自签证书,肯定不符合hsts要求,那么应该怎么办?其实宝塔支持自定义证书的,而且很方便开启,可以直接跳过自签证书。

1.在宝塔设置页面中,点击面板SSL,注意点击文字,不是开关

图1 面板SSL

2.输入自定义证书,可以根据域名自行申请,或者直接使用域名的野卡证书。

图2 宝塔自定义面板证书

3.开启面板SSL(这次是点击开关)

通过上述步骤操作后,宝塔面板便只能通过https访问了。而且直接是可信证书,跳过了宝塔自签的证书。

CentOS6用于好像无法使用面板SSL,貌似是pip版本过低,导致pip无法安装openssl。建议使用CentOS7系统。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注