CA认证过程
CA(Certificate Authority),即认证中心。主要作用是为用户发放数字证书,作为身份验证,实现数据的不可否认性。数字证书可发放、更新、撤销、验证。
数字证书签名和使用的全过程:
1.证书申请者生成CSR证书请求文件和客户端私钥。
2.证书申请者发送CSR给证书颁发机构。
3.证书颁发机构使用根证书私钥对CSR进行签名,生成CRT证书文件。
4.证书颁发机构发送CRT证书文件给证书申请者。
5.证书申请者使用CRT证书文件和私钥进行https安全认证。
私有CA认证
私有证书认证指自己充当证书颁发机构,为我们的网站颁发证书,实现网站加密认证。
1.安装nginx,且必须支持–with-http_ssl_module 模块,如果没有则需源码安装
#nginx -V 查看nginx安装配置
一般yum安装的nginx也会默认包括这个模块,如果没有就在源码编译的时候添加进去
像我下面就是yum直接下载安装的,也包含了这个模块
[root@ly001 ~]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx-1.18 --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module
我下面的操作都是在源码安装的nginx上操作的,跟yum安装的没什么区别,就目录不一样而已,根据自己的目录来,我展示这个yum的就是想说yum下载的就直接支持–with-http_ssl_module模块而已。
然后还需要openssl的支持,yum下载一个就好了
yum install openssl -y
然后开始生成我们的证书。
先创建一个文件夹保存证书相关文件,然后生成密钥文件
mkdir /usr/local/nginx/ssl
openssl genrsa -out /usr/local/nginx/ssl/server.key 1024
然后填写证书申请文件,填写自己的信息就好了
要填的信息分别是:国家,省份,城市,公司,部门,域名,邮箱,密码,可选的公司名称。
后两项直接回车就好了,不填也没什么,反正这是私网证书。
[root@localhost ~]# openssl req -new -key /usr/local/nginx/ssl/server.key -out /usr/local/nginx/ssl/server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:GuangDong
Locality Name (eg, city) [Default City]:GuangZhou
Organization Name (eg, company) [Default Company Ltd]:nginx
Organizational Unit Name (eg, section) []:ssl
Common Name (eg, your name or your server's hostname) []:www.test.com
Email Address []:qfasf.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
填好申请文件以后直接执行下面的命令生成证书
openssl req -x509 -days 365 -key /usr/local/nginx/ssl/server.key -in /usr/local/nginx/ssl/server.csr -out /usr/local/nginx/ssl/server.crt
然后查看我们的证书文件
[root@localhost ~]# ls /usr/local/nginx/ssl/
server.crt server.csr server.key
证书生成以后就可以去配置文件里使用了
server {
listen 443 ssl;
server_name www.game.com;
charset utf-8;
ssl_certificate /usr/local/nginx/ssl/server.crt;
ssl_certificate_key /usr/local/nginx/ssl/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
location / {
root /www/game;
index index.html index.htm;
}
}
然后重启nginx,用https来访问我们的网站
systemctl restart nginx.service
!](https://img-blog.csdnimg.cn/781f7c435c574bcd9a5e377d2faad351.png)
可以看到浏览器显示我们的证书无效,当然了,这是我们的私网证书,浏览器是不认可的,想在公网配置证书是要认证机构颁发的,也就是要买才行。
虽然证书无效但是还是能看到我们证书的信息的
到这里就配置证书完成了。
在写这篇文章的时候也有参考其它文档,如有侵权请联系告知删除。