阿里云不再提供一年期限的免费域名SSL证书的应对策略

毫无疑问,当然是用Let’s Encrypt

那么就开始搞吧,事实上真的很简单。只是首先要搞清楚自己的部署环境,我用的是基于yeszao/dnmp改写的一个环境,大体上一样,可以直接看yeszao/dnmp。

首先我把域名解析到我的服务器,如果是一个新的域名,则在得到ssl证书之前,给该域名的站点conf中只配置80端口,443端口等后续得到了数字证书以后再添加或解除注释,免得没有ssl的文件nginx无法启动。

然后在该域名的站点的conf中添加

location ^~ /.well-known/acme-challenge/ {
      default_type "text/plain";
      root /www/acme-challenge/;
    }

注意,上面root后面对应的地址是基于dnmp的env配置的映射地址,也就是dnmp目录下的www中再新建一个acme-challenge,如果dnmp在/,则实际目录地址是/dnmp/www/acme-challenge,这个地址在下一步用的到。

添加以上规则后,重启nginx。

然后就可以使用命令创建证书了:

sudo certbot certonly --webroot -w /dnmp/www/acme-challenge/ -d "*.isbn.ink" -d isbn.ink

命令也可以明确–server参数

sudo certbot certonly --webroot -w /dnmp/www/acme-challenge/ -d "*.isbn.ink" -d isbn.ink --server https://acme-v02.api.letsencrypt.org/directory

certbot如何安装请看https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal&tab=standard

按提示执行完就行了,甚至都自动创建好了更新任务,任务查看命令:systemctl list-timers

NEXT                        LEFT               LAST                        PASSED       UNIT                           ACTIVATES                       
Fri 2024-01-26 14:11:00 CST 19min left         n/a                         n/a          snap.certbot.renew.timer       snap.certbot.renew.service

ssl证书文件默认会放在/etc/letsencrypt下面,那么结合dnmp的env配置项:

NGINX_SSL_CERTIFICATE_DIR=/etc/letsencrypt

如果有其他站点需要用到NGINX_SSL_CERTIFICATE_DIR的默认配置./services/nginx/ssl,那么还有个办法,即使用ln到/etc/letsencrypt/live:

ln -s /etc/letsencrypt/live /dnmp/services/nginx/ssl

那么,在站点的conf文件中,对443部分的设置如下:

server {
    listen 443 ssl;
    server_name isbn.ink;
    charset utf8;
    #ssl on;
    ssl_certificate   /ssl/live/isbn.ink/fullchain.pem;
    ssl_certificate_key  /ssl/live/isbn.ink/privkey.pem;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    root   /www/localhost;
    index  index.php index.html index.htm;

    location / {
        if (!-e $request_filename) {
            rewrite (.*) /index.php;
        }
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass   php80:9000;
        include        fastcgi-php.conf;
        include        fastcgi_params;
    }

}

可以看到我把live放到了conf中,而没有放在NGINX_SSL_CERTIFICATE_DIR设置中,因为live/isbn.ink/fullchain.pem是个软地址,实际文件是指向../../archive/isbn.ink/fullchain1.pem的,这里用了两层父目录,站点域名一层,live占了一层,所以ssl的映射目录只能设置为/etc/letsencrypt。

恬不知耻的课文

因工作需要,研究某教辅的数字化编排,样稿中第一篇课文就是“大青树下的小学”,我找来课文一读,差点恶心死。天底下哪有这样的小学,太不合情理了,于是我搜到这篇文章:“三年级第一课《大青树下的小学》,云南作家吴然为什么写这篇课文?”,由“人教童书”发布。

作者自述背后的故事,揭开了谜团,划线是作者对实际情况的描写,红线是环境,绿线是故事,结果到了被选为课文的他自己那篇所谓散文,就完全不说人话了。不是不知道事实,却故意扭曲甚至编造,也许是撒谎惯了的缘故吧,为学习这样的课文的孩子们悲哀,包括我的已经读了这篇课文的女儿和过几年也要读这样的课文的儿子。

附上作者简介:

吴然(1946~),原名吴兴然,云南宣威县人,中国作家协会会员、云南省作家协会常务理事兼儿童文学委员会副主任,春城晚报社高级编辑。1973年在《云南日报》发表第一篇儿童文学作品《海花》。曾获中国作协第二、五届全国优秀儿童文学奖,以及宋庆龄儿童文学奖、冰心儿童图书奖等多项。作品选入上百种选本,其中《新年礼物》《珍珠泉》《杨梅会》等被编入九年义务教育小学语文教科书。已出版散文、散文诗集《歌溪》、《一碗水》、《我的小马》(台湾版)、《小鸟在歌唱》、《天使的花房》等10多部。
  他在高中毕业后当过工人和小学教师。后调《春城晚报》作编辑,1985年起主编该报《小橘灯》儿童副刊。中国作家协会会员,云南省作家协会儿童文学委员会副主任。80年代以来主要致力于儿童散文和散文诗创作,出版有散文、散文诗集《歌溪》《凉山的风》《风雨集》《珍珠雨》《小鸟在歌》。

来源:http://www.lbx777.com/yw05/dqsxd/zzjj.htm