如何搭建自签名证书的https网站

ssl协议结构

 ssl握手(图中的数字代表各个阶段)

 SSL建立第一阶段:
客户端首先发送ClientHello消息到服务端,服务端收到ClientHello消息后,再发送ServerHello消息回应客户端。

SSL建立第二阶段:
服务器向客户端发送消息。

服务器启动SSL握手第2阶段,是本阶段所有消息的唯一发送方,客户机是所有消息的唯一接收方。该阶段分为4步:

证书:服务器将数字证书和到根CA整个链发给客户端,使客户端能用服务器证书中的服务器公钥认证服务器。
服务器密钥交换(可选):这里视密钥交换算法而定
证书请求:服务端可能会要求客户自身进行验证。
服务器握手完成:第二阶段的结束,第三阶段开始的信号

SSL建立第三阶段:
客户端收到服务器发送的一系列消息并解析后,将本端相应的消息发送给服务器。

客户机启动SSL握手第3阶段,是本阶段所有消息的唯一发送方,服务器是所有消息的唯一接收方。该阶段分为3步:

证书(可选):为了对服务器证明自身,客户要发送一个证书信息,这是可选的,在IIS中可以配置强制客户端证书认证。
客户机密钥交换(Pre-master-secret):这里客户端将预备主密钥发送给服务端,注意这里会使用服务端的公钥进行加密。
证书验证(可选),对预备秘密和随机数进行签名,证明拥有(a)证书的公钥。

SSL建立第四阶段:
完成握手协议,建立SSL连接。

客户机启动SSL握手第4阶段,使服务器结束。该阶段分为4步

建立起一个安全的连接,客户端发送一个Change Cipher Spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中。然后,客户端用新的算法、密钥参数发送一个Finished消息,这条消息可以检查密钥交换和认证过程是否已经成功。其中包括一个校验值,对客户端整个握手过程的消息进行校验。服务器同样发送Change Cipher Spec消息和Finished消息。握手过程完成,客户端和服务器可以交换应用层数据进行通信。

工作流程:

SSLCertificateFile: /etc/pki/tls/certs/localhost.crt    //系统自带的证书

SSLCertificateKeyFile:/etc/pki/tls/private/localhost.key   

vim /etc/httpd/conf.d/ssl.conf    //ssl协议的配置文件

搭建CA服务器和服务器签证

使用openssl生成自签名证书:

搭建 CA  Server

一、生成私钥(CA机构) [root@manage ca_learning]# openssl genrsa -out ca.key 2048

二、得有证书(CA机构的证书) 生成公钥:[root@manage ca_learning]# openssl rsa -in ca.key -out ca.pub -pubout

三、生成证书:[root@manage ca_learning]# openssl req -new -x509 -days 36500 -key ca.key -out ca.crt

前三步为搭建CA机构(私有的,你自己的)

四、为服务器去签发证书

1.生成私钥: openssl genrsa -out server.key 2048

2.生成申请文件:.csr openssl req -new -key server.key -out server.csr

3.将申请文件提交给CA机构(ca.key, ca.crt), 让ca机构去签发证书 openssl x509 -req -days 365000 -in server.csr -CA cert.crt -CAkey ca.key -CAcreateserial -out server.crt

字段解释:

x509: 签发509证书

-req: 说明输入是一个证书申请文件

-in: 指定申请文件

-CA: 指定CA机构的证书

-CAkey: 指定CA结构的私钥

-CAcreateserial: CA创建序列号:唯一标识

-out: 输出证书

//服务器得先产生公钥和私钥 提交证书申请文件.csr CA签发证书-> crt证书

 总共生成的文件(其中ca.slr是自动生成的随机数文件)

第一步:需要有一个访问该网站的ip

nmcli connection modify ens160 +ipv4.addresses 192.168.31.146/24

第二步:新建网站目录,新建首页文件

vim /var/www/http/https/index.html

编辑index.html文件

 第三步:在 /etc/httpd/conf.d/目录,去新建配置文件:myssl.conf

vim /etc/httpd/conf.d/myssl.conf

第四步:在myssl.conf文件中配置

<Directory "/var/www/http/https">  //目录权限设置

AllowOverride None

Require all granted

</Directory>

<VirtualHost 192.168.31.146:443>

SSLEngine on

SSLProtocol all -SSLv3

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA     //密码套件,列出允许客户端协商的密码。

#SSLCipherSuite PROFILE=SYSTEM        

SSLCertificateFile /root/ca_learning/server.crt    //指定证书路径: 证书的位置: server.crt

SSLCertificateKeyFile /root/ca_learning/server.key  //指定密钥文件路径 # server.key的位置

DocumentRoot /var/www/http/https    //访问的根目录

ServerName 192.168.31.146:443    //访问服务器的名字

</VirtualHost>

第五步:重启httpd服务

systemctl restart httpd

第六步:测试

猜你喜欢

转载自blog.csdn.net/qq_57146982/article/details/128605120