侧边栏壁纸
博主头像
王小木博主等级

这是很长,很好的一生

  • 累计撰写 126 篇文章
  • 累计创建 39 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

certbot 生成 泛域名证书 不带www 显示不安全

王小木
2021-06-06 / 0 评论 / 0 点赞 / 705 阅读 / 2,789 字

背景:搭建了自己的个人博客,然后使用 certbot 生成了泛域名证书,在nginx中设置了 http访问时自动跳转到https,但是发现当访问域名 带www时能跳转到https且正常,访问域名不带www时,无法自动跳转,浏览器提示不安全。
捕获.PNG

在网上查找不少相关资料,大多数说法都是生成泛域名证书,*.xxx.com,试了结果没用,经过试验,在生成证书时需要把 *.xxx.com 和 xxx.com的域名同时加进去。

我的系统环境是 centos,nginx,域名证书使用的是 certbot来生成的,certbot的安装我这里不说了,主要说下生成证书那一步,网上大多数答案是生成泛域名证书 这样生成的

certbot certonly --preferred-challenges dns --manual  -d *.wxmblog.com --server https://acme-v02.api.letsencrypt.org/directory

但是这样生成的证书还是只能在加上www 的情况下使用,正确的命令应该是

certbot certonly --preferred-challenges dns --manual  -d wxmblog.com -d *.wxmblog.com --server https://acme-v02.api.letsencrypt.org/directory

里面的区别就是 -d wxmblog.com -d .wxmblog.com 同时为wxmblog.com和.wxmblog.com 同时生成,需要注意的是,执行完命令后会返回一个value 需要先在域名服务商添加解析再继续下一步
捕获.PNG
那这个值添加到阿里云域名解析处
捕获.PNG
添加完成后回车就好了,
捕获.PNG
看到生成的
/etc/letsencrypt/live/wxmblog.com/fullchain.pem
/etc/letsencrypt/live/wxmblog.com/privkey.pem
即使证书路径,在nginx中修改就好了
nginx 配置如下

upstream halo {
  server 127.0.0.1:8090;
}
 
server {  
    listen 80;  
    server_name wxmblog.com;  
       
    rewrite ^(.*)$  https://$host$1 permanent;  
}
 server {
        server_name bbs.wxmblog.com;   # managed by Certbot
        #root         /usr/share/nginx/html;
 
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
 
    location / {
        proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
        error_page 404 /404.html;
            location = /40x.html {
        }
 
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
 
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/wxmblog.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/wxmblog.com/privkey.pem; # managed by Certbot 
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
 
}

修改nginx配置后重新加载下,nginx -s reload
之后再不加www访问就没问题了
捕获.PNG
特此记录下,希望能帮到你(吐槽下网上资料居然搜半天都没正确答案)

0

评论区