WP系列5: SSL配置
目前和老板用的SSL安装连接的工具都是 let’s encrypt, 简称 letsencrypt.
其内核个人觉得是 openSSL, 在全部安装好的情况下, 可以用 openssl 尝试连接自己的网站.
openssl s_client -tls1_3 -connect idehe.com:443
SSL的版本有 ssl1_0, ssl1_1, ssl1_2 和最新的 ssl1_3.
目前通过 site health 检查, 我这个站点还存在问题如下, 目前还不知道如何解决. 应该是 SSL的版本相关的问题, 留在这里.
(http_request_failed) stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure stream_socket_client(): Failed to enable crypto stream_socket_client(): unable to connect to ssl://idehe.com:443 (Unknown error)
正式配置流程
需要有 python3 以上, 请安装相应的依赖:
python3.11 -m pip install certbot-nginx
直接开始配置SSL给服务器:
DOMAIN=idehe.com
WILDCARD=*.$DOMAIN
echo $DOMAIN && echo $WILDCARD
sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
这里同时配置了子域名. 并且是手工更新, 每隔三个月续期一次.
配置过程中需要添加一个 DNS TXT 记录, 类似于: _acme-challenge.idehe.com.
安装额外插件检查其他SSL配置
需要额外安装一个叫做 really simple SSL 的插件, 然后插件会帮你进行一些安全设置.
另外一些额外的安全设置可以通过以下两个扫描发现:
https://www.ssllabs.com/ssltest/analyze.html?d=idehe.com&latest
https://scan.really-simple-ssl.com/
检查所有相应的设置:
在NGINX CONF文件里面给与相应的配置, 这里注意 nginx 不支持 .htaccess, 不要用这个
add_header Strict-Transport-Security "includeSubDomains; preload; max-age=63072000";
add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';" always;
add_header X-Xss-Protection "0" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), camera=('self'), microphone=()";
基本上就OK了, 有问题留言, 其他方面可以查看我 WP系列.