CertBot配置免费HTTPS证书
1.域名
首先从云服务器商注册一个域名
在云服务器商提供的控制台,购买服务器后,申请域名并且执行域名解析
2.服务器安装和配置nginx
服务器安装nginx
-
访问nginx官网
-
下载nginx包
wgte https://nginx.org/download/nginx-VERSION-YOU-WANT.tar.gz
-
在服务器上,安装解压nginx所需的c++插件包
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
插件作用
1.gcc 可以编译 C,C++,Ada,Object C和Java等语言(安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境)
2.pcre pcre-devel pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库
3.zlib zlib-devel zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
4.openssl openssl-devel OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
5.nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库
4 .解压安装和配置
-- 解压进入目录
tar xvf nginx-1.21.6.tar.gz
cd nginx-1.21.6
-- 配置https模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
-- 编译
make
-- 安装
make install
--设置开机启动服务文件
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
-- 加入开机启动
systemctl enable nginx.service
5.配置域名nginx反向代理
nginx默认配置nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
#多虚拟主机引入配置的文件夹
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
#各种代理配置
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
#多虚拟主机引入的配置文件夹
include /etc/nginx/conf.d/*.conf;
#默认的虚拟主机
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
conf.d文件夹中虚拟服务器配置 xxxx.conf
一般是域名+.conf 例如xxx.blog.com.conf
server{
server_name 域名.com;
location /{
proxy_pass http://localhost:8080/;
}
}
#### 这一部分注释的是原始不用配置的,certbot获取证书时会自动配置
# listen 443 ssl; # managed by Certbot
# ssl_certificate /etc/***; # managed by Certbot
# ssl_certificate_key /***; # managed by Certbot
# include /etc/***; # managed by Certbot
# ssl_dhparam /etc/***; # managed by Certbot
}
#server{
# if ($host = 域名.com) {
# return 301 https://$host$request_uri;
# } # managed by Certbot
# server_name 域名.com;
# listen 80;
# return 404; # managed by Certbot
#}
3.获取HTTPS证书
免费的https证书颁发网站:https://certbot.eff.org/
1.主页:
2.选择你的https在哪里使用
这里选择nginx在centos7 也可以其他选择
3.根据提示,进入ssh
4.安装snapd
5.安装
安装命令
在 CentOS 7 中添加 EPEL
sudo yum install epel-release
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
确保snapd是最新
sudo snap install core
sudo snap refresh core
6.返回certbot安装certbot
安装命令
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
#执行certbot获取https证书,并自动配置你的conf.d文件夹中,虚拟主机配置下的https证书配置
sudo certbot --nginx
#执行这一步后,1.需要填写一个邮箱,用以接受证书相关的信息推送
#第二个需要填写的,原文
#Select the appropriate numbers separated by commas and/or spaces, or leave input
#blank to select all options shown (Enter 'c' to cancel): 填写一个空格就可以
# 测试自动续期
sudo certbot renew --dry-run