我这里是使用nginx搭建的,系统为debian系统,所以我这里介绍一下nginx下怎么配置
一、安装Certbot
sudo apt install certbot python-certbot-nginx
二、证书的获取与配置
1、可以通过以下命令获取证书,并且自动配置站点的nginx配置文件,这样就不需要我们自己手动去配置了。命令如下:
sudo certbot --nginx
2、如果我们只是获取证书,然后自己手动配置站点的nginx配置文件的话,运行以下命令就可以了,如下:
sudo certbot certonly --nginx
因为上面我们只是获取了证书,接下来我们就要自己取手动配置nginx。如果我们之前配置过http,在/etc/nginx/sites-available/你的域名.conf可以看到以下类似的内容如:
server {
listen 80;
listen [::]:80;
server_name your_domain; #your_domian为你自己的域名
root /var/www/your_domain;
index index.php index.html index.htm;
……
}
你只需要将https加入到server 自段中就可以了。改完大概就是这个样子,如下:
server {
listen 80;
listen [::]:80;
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
server_name your_domain; #your_domian为你自己的域名
ssl_certificate /etc/letsencrypt/live/your_domian/fullchain.pem;#证书的路径
ssl_certificate_key /etc/letsencrypt/live/your_domian/privkey.pem;#证书的路径
……
……
root /var/www/your_domain;
index index.php index.html index.htm;
……
}
编辑完后保存配置文件,启动nginx:
sudo service nginx start
小贴士:我们每次修改配置文件后,都要用sudo nginx -t
命令检查一下,看有没有报错,没有报错的话然后再启动nginx。
三、https跳转
如果你们的服务器和上面的例子所示,即支持http请求又支持https请求,但是我们只希望接受https请求,那么我这边只需要增加一个301跳转以下就可以了。代码如下:
server {
listen 80;
listen [::]:80;
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
……
#######################################
# https 跳转设置
if ($scheme = http ) {
return 301 https://$host$request_uri;
}
#######################################
……
}
关于证书这块可以参考certbot官网安装指南中的介绍。地址为:https://certbot.eff.org/lets-encrypt/debianstretch-nginx