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系列.