CA认证过程及apache和nginx实现https的方法

一、 CA认证过程

1、 CA概述
CA概述:Certificate Authority的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。CA认证的流程和公安局派出所颁发身份证的流程一样
认证中心(CA)的功能有:证书发放、证书更新、证书撤销和证书验证。
CA证书作用:身份认证,实现数据的不可否认性。
我们先回顾一下身份证的办理过程:
带上户口本(证明你合法)-》当地派出所(认证机构)-》签发证书(审核有效信息)-》你去领证书
接下来我们回顾数字证书认证过程如下图:
CA认证过程及apache和nginx实现https的方法_第1张图片
证书请求文件:CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书的私钥签名就生成了证书文件,也就是颁发给用户的证书。
总结:证书签名过程
1)生成请求文件
2)CA确认申请者的身份真实性
3)CA使用根证书的私钥加密请求文件,生成证书
4)把证书传给申请者

2、 用户使用CA证书确认服务器身份过程
CA认证过程及apache和nginx实现https的方法_第2张图片
1)请求文件发给xuegod63 CA认证中心
2)CA认证 (用CA的私钥加密xuegod64的请求文件), 得到加密后的文件,这个文件就是xuegod64的证书 ),CA认证中心颁发给xuegod64加密后的数字证书
3)用户访问xuegod64并向xuegod64索要数字证书
4)用户拿到数字证书后,用浏览器中CA的公钥解密xuegod64的证书,解开后得到xuegod64的公钥和标识(主机名,国家,省,组织等信息),从而确认xuegod64的身份。

3、 申请免费的证书
https://freessl.cn
CA认证过程及apache和nginx实现https的方法_第3张图片

收费的数字证书:
https://buy.wosign.com/free/FreeSSL.html
https://buy.wosign.com/
http://www.shuzizhengshu.com/html/chanpin/SSLzhengshu/

二、 搭建CA认证中心

1、 环境介绍
主机名 IP地址 作用
xuegod120 192.168.0.120 CA认证中心
xuegod130 192.168.0.130 web服务器

2、 安装CA认证软件包中心:
2.1查询是否安装openssl
[root@xuegod120 ~]# rpm -qf which openssl #已安装openssl
openssl-1.0.2k-12.el7.x86_64

2.2 配置CA,开启CA认证中心
[root@xuegod120 ~]# vim /etc/pki/tls/openssl.cnf
改:172 basicConstraints=CA:FALSE
为:172 basicConstraints=CA:TRUE #让自己成为CA认证中心
2.3 生成CA的公钥证书和私钥
[root@xuegod120 ~]# /etc/pki/tls/misc/CA -h #查看帮忙
在这里插入图片描述
参数说明:
-newcert 新证书
-newreq 新请求
-newreq-nodes 新请求节点
-newca 新的CA证书
-sign 签证
-verify 验证

生成CA证书文件
[root@xuegod120 ~]# /etc/pki/tls/misc/CA -newca
CA certificate filename (or enter to create) #直接回车,创建CA私钥

Making CA certificate …
Generating a 2048 bit RSA private key
…+++
…+++
writing new private key to ‘/etc/pki/CA/private/./cakey.pem’
Enter PEM pass phrase:123456 #输入密码,保护私钥
Verifying - Enter PEM pass phrase:123456 #再次输入密码
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]:CN #输入国家的名字
State or Province Name (full name) []:Beijing #输入省的名字
Locality Name (eg, city) [Default City]:haidian #输入地区的名字
Organization Name (eg, company) [Default Company Ltd]:xuegod #输入组织名称(公司名称)
Organizational Unit Name (eg, section) []:IT #输入组织单位名称
Common Name (eg, your name or your server’s hostname) []:xuegod120.com #输入通用名(例如,你的服务器主机名称)
Email Address []:[email protected] #输入电子邮箱地址

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: #是否需要修改密码,直接回车
An optional company name []: #直接回车
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/./cakey.pem:123456 #输入刚刚的私钥密码
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
a6:ef:a9:23:74:eb:b8:f9
Validity
Not Before: Aug 14 09:15:14 2019 GMT
Not After : Aug 13 09:15:14 2022 GMT
Subject:
countryName = CN
stateOrProvinceName = beijing
organizationName = xuegod
organizationalUnitName = IT
commonName = xuegod120.com
emailAddress = [email protected]
X509v3 extensions:
X509v3 Subject Key Identifier:
4B:0C:4E:2F:69:BE:6B:BA:EB:09:6B:E2:E1:A2:96:DB:4A:EA:EC:60
X509v3 Authority Key Identifier:
keyid:4B:0C:4E:2F:69:BE:6B:BA:EB:09:6B:E2:E1:A2:96:DB:4A:EA:EC:60

        X509v3 Basic Constraints:
            CA:TRUE

Certificate is to be certified until Aug 13 09:15:14 2022 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

到此CA的认证中心已经搭建完毕

2.4 查询CA的根证书,包括CA的公钥
[root@xuegod120 ~]# vim /etc/pki/CA/cacert.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
a6:ef:a9:23:74:eb:b8:f9
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=CN, ST=beijing, O=xuegod, OU=IT, CN=xuegod120.com/[email protected] #CA的机构信息
Validity
Not Before: Aug 14 09:15:14 2019 GMT
Not After : Aug 13 09:15:14 2022 GMT
Subject: C=CN, ST=beijing, O=xuegod, OU=IT, CN=xuegod120.com/[email protected]
Subject Public Key Info: #ca认证中心公钥信息
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:

2.5 查看根证书的私钥
[root@xuegod120 ~]# cat /etc/pki/CA/private/cakey.pem
CA认证过程及apache和nginx实现https的方法_第4张图片

三、 在apache上搭建https安全访问

1、 基于apache搭建https的整体流程如下
(1)、在xuegod64上安装httpd
(2)、xuegod64生成证书请求文件,发给xuegod63 CA认证中心进行签名,xuegod63下发证书 给xuegod64
(3)、把证书和httpd相结合,实现https
(4)、测试https认证效果

2、 安装httpd服务
[root@xuegod130 ~]# yum -y install httpd
[root@xuegod130 ~]# vim /etc/httpd/conf/httpd.conf
ServerName localhost:80
[root@xuegod130 ~]# systemctl start httpd
[root@xuegod130 ~]# iptables -F

3、 生成请求证书文件,从CA中心获取证书
[root@xuegod130 ~]# openssl genrsa -h #查看帮助
CA认证过程及apache和nginx实现https的方法_第5张图片
[root@xuegod130 ~]# openssl genrsa -des3 -out /etc/httpd/conf.d/server.key #生成请求证书
Generating RSA private key, 2048 bit long modulus
…+++
…+++
e is 65537 (0x10001)
Enter pass phrase for /etc/httpd/conf.d/server.key:123456 #输入保护私钥的密码
Verifying - Enter pass phrase for /etc/httpd/conf.d/server.key:123456 #再次输入

4、 使用请求文件(私钥)来向CA获取证书
[root@xuegod130 ~]# openssl req -new -key /etc/httpd/conf.d/server.key -out /server.csr #使用apache的私钥文件,向CA认证中心请求加密后的证书文件
Enter pass phrase for /etc/httpd/conf.d/server.key:123456 #输入server.key的密码
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]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:haidian
Organization Name (eg, company) [Default Company Ltd]:xuegod
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server’s hostname) []:xuegod130.com
Email Address []:[email protected]

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: #不输入密码直接回车
An optional company name []: #直接回车

注意:使用web服务器的请求证书文件,向CA认证中心请求的证书里面包含,web服务器的证书文件的公钥信息,因为web服务器的请求证书文件即为私钥,我们可以通过私钥计算出公钥的信息,但是不能通过公钥计算私钥的信息。

5、 将证书文件发送给CA
[root@xuegod130 ~]# scp /server.csr 192.168.0.120:/tmp/ #发送文件到CA中心

6、 到CA认证中心服务器,进行签名
[root@xuegod120 ~]# openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /server.crt
##这里使用CA的公钥和私钥文件,来对Web服务器的证书进行签名后生成一个新的证书文件,在发送给到web服务器使用
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:123456 #输入CA证书的密码
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
a6:ef:a9:23:74:eb:b8:fa
Validity
Not Before: Aug 14 09:39:21 2019 GMT
Not After : Aug 13 09:39:21 2020 GMT
Subject:
countryName = CN
stateOrProvinceName = beijing
organizationName = xuegod
organizationalUnitName = IT
commonName = xuegod130.com
emailAddress = [email protected]
X509v3 extensions:
X509v3 Basic Constraints:
CA:TRUE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
B8:8B:47:22:90:AC:D7:A6:BC:A4:99:7A:DC:31:9E:E3:A8:01:42:84
X509v3 Authority Key Identifier:
keyid:4B:0C:4E:2F:69:BE:6B:BA:EB:09:6B:E2:E1:A2:96:DB:4A:EA:EC:60

Certificate is to be certified until Aug 13 09:39:21 2020 GMT (365 days)
Sign the certificate? [y/n]:y #注册证书

1 out of 1 certificate requests certified, commit? [y/n]y #确认
Write out database with 1 new entries
Data Base Updated

7、 将新生成的证书发送到web服务器
[root@xuegod120 ~]# scp /server.crt 192.168.0.130:/

四、 配置apache使用https证书访问

1、 ssl四次握手实现安全传输数据
SSL(Secure Socket Layer)安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV2、SSLV3(常用)
2、 SSL的四次传输
CA认证过程及apache和nginx实现https的方法_第6张图片
具体传输流程如下:
C(client客户端) ------------------------------> S(server服务端)
(1)、 客户端请求一个安全的会话,协商加密算法
C <------------------------------------------------- S
(2)、服务端将自己的证书传给客户端
C -------------------------------------------------> S
(3)、客户端用浏览中存放CA的根证书检测xuegod64证书,确认xuegod64是我要访问的网站。
客户端使用CA根证书中的公钥解密xuegod64的证书,从而得到xuegod64的公钥;
然后客户端生成一把对称的加密密钥,用xuegod64的公钥加密这个对称加密的密钥发给xuegod64。 后期使用对称密钥加密数据
C <------------------------------------------------> S
(4)、xuegod64使用私钥解密,得到对称加密的密钥。从而,使用对称加密密钥来进行安全快速传输数据。这里使用对称加密数据,是因为对称加密和解密速度快
总结SSL四次握手流程整体分两个过程:
过程1: 确认身份;过程2:生成一把对称加密密钥,传输数据。

3、 安装ssl模块
[root@xuegod130 ~]# yum -y install mod_ssl

4、 配置httpd加载ssl证书文件
[root@xuegod130 ~]# cp /server.crt /etc/httpd/conf.d/ #复制ssl证书到http目录下
[root@xuegod130 ~]# ll /etc/httpd/conf.d/server.key #查看私钥证书文件
-rw-r–r-- 1 root root 1751 Aug 14 17:29 /etc/httpd/conf.d/server.key
[root@xuegod130 ~]# vim /etc/httpd/conf.d/ssl.conf
改:100 SSLCertificateFile /etc/pki/tls/certs/localhost.crt
为:100 SSLCertificateFile /etc/httpd/conf.d/server.crt #ssl证书文件

改:107 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
为:107 SSLCertificateKeyFile /etc/httpd/conf.d/server.key #私钥文件

5、 重启httpd服务
[root@xuegod130 ~]# systemctl restart httpd
Enter SSL pass phrase for localhost:443 (RSA) : ****** #输入httpd私钥的密码

6、 查看httpd的443端口是否启动
[root@xuegod130 ~]# netstat -antup | grep httpd
在这里插入图片描述

7、 使用浏览器访问测试
网站证书文件未被360验证,所以提示不安全
CA认证过程及apache和nginx实现https的方法_第7张图片

8、 安装证书文件到本地
点击“证书信息”,在弹出的界面中选择“安装证书”,将证书文件安装到本地系统
在这里插入图片描述

9、 查看本地证书文件
进入IE的选择,选择内容,证书
CA认证过程及apache和nginx实现https的方法_第8张图片

双击可以查看证书的详细信息
CA认证过程及apache和nginx实现https的方法_第9张图片

证书安装后访问如下:
CA认证过程及apache和nginx实现https的方法_第10张图片

五、 使用nginx配置https

1、 环境介绍
主机名 IP地址 作用
xuegod120 192.168.0.120 CA认证中心
xuegod140 192.168.0.140 nginx服务器

2、 安装nginx
配置nginx的yum源
[root@xuegod140 ~]# cd /etc/yum.repos.d/
[root@xuegod140 yum.repos.d]# vim nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/7/$basearch/
gpgcheck=0
enabled=1

安装nginx
[root@xuegod140 ~]# yum clean all
[root@xuegod140 ~]# yum makecache
[root@xuegod140 ~]# yum -y install nginx

启动nginx
[root@xuegod140 ~]# systemctl start nginx
[root@xuegod140 ~]# netstat -antup | grep nginx

3、 配置nginx实现https
注意:这里nginx服务器需要的私钥和证书文件,都需要重新生成和从CA证书请求和签名,我们这里为了方便,接着上面的实验,将apache的私钥和证书文件直接拷贝到nginx服务器使用。

[root@xuegod130 ~]# scp /etc/httpd/conf.d/server.key 192.168.0.140:/ #私钥文件
[root@xuegod130 ~]# scp /etc/httpd/conf.d/server.crt 192.168.0.140:/ #CA签名证书文件
[root@xuegod140 ~]# cp /server.key /etc/nginx/conf.d/
[root@xuegod140 ~]# cp /server.crt /etc/nginx/conf.d/
CA认证过程及apache和nginx实现https的方法_第11张图片

修改nginx配置文件
[root@xuegod140 ~]# vim /etc/nginx/conf.d/default.conf #yum安装在/etc/目录下
server {
listen 443 ssl;
keepalive_timeout 70;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}                    

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate     /etc/nginx/conf.d/server.crt;
ssl_certificate_key /etc/nginx/conf.d/server.key;
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 10m;

}

查看语法是否错误
[root@xuegod140 ~]# nginx -t
Enter PEM pass phrase:123456 #输入私钥密码进行验证
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx服务会报错
在这里插入图片描述
先加载nginx的配置也会报nginx没有启动
在这里插入图片描述
使用system启动,同样报错
在这里插入图片描述
直接使用nginx程序启动
在这里插入图片描述

再次查看nginx的进程,发现80和443已经启动成功
在这里插入图片描述
4、 使用浏览器访问测试
CA认证过程及apache和nginx实现https的方法_第12张图片
同样这里需要先安装证书文件到本地系统
CA认证过程及apache和nginx实现https的方法_第13张图片

你可能感兴趣的:(第三阶段-集群类,第三阶段-安全类,apache使用https访问,nginx实现https访问,CA认证中心的搭建,https证书文件的申请和前面)