使用Certbot为nginx配置免费的https证书

以一级域名 abc.com 为列

一、方案一:基于http挑战的配置(自动)

        1)Nginx 增加用于证书的挑战的配置,并重启nginx

server {
    listen       80 ;
    listen       [::]:80;
    server_name *.abc.com;


    # 将 http 请求转发到 https
    location / {
	    if ($host ~ .*\.abc.com$) {
	        return 301 https://$host$request_uri;
	    }
	}


	# 用于证书申请时的挑战
	location /.well-known/acme-challenge/ {
	    set $a $uri;
	    if ( $uri ~ .*\\/([^/]+)$) {
	        set $a $1;
	    }
	    default_type    text/plain;
	    return 200 $a;
	}
}

2)自动 c.abc.com 的https配置证书

certbot --nginx -d c.abc.com -n  --agree-tos --preferred-challenges http

3) 访问验证证书是否生效

二、方案二:基于dns挑战的配置(手动)

        1) 执行  certbot 命令

        

certbot certonly -d c.abc.com --manual --preferred-challenges dns

        2) certbot 提示如下信息:

        使用Certbot为nginx配置免费的https证书_第1张图片

 

 

         3)根据提示配置DNS,这里以阿里云为例

                a) 打开阿里云的域名解析

                使用Certbot为nginx配置免费的https证书_第2张图片

              b) 添加记录值,记录类型选择 TXT, 主机记录和记录值为 certbot 提示的信息, 如下图所示填写,确认即可:

                使用Certbot为nginx配置免费的https证书_第3张图片

 

            4)回到 certbot 的对话框,回车,即可生成 c.abc.com的 SSL证书,如下图所示:

                使用Certbot为nginx配置免费的https证书_第4张图片

 

            5)在nginx中配置证书,并重启 nginx

ssl_certificate /etc/letsencrypt/live/c.abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/c.abc.com/privkey.pem;

                示例:

                

 

                

         6) 访问验证证书是否生效

你可能感兴趣的:(nginx,https,服务器,运维,linux)