内容简介:自建CA实现HTTPS教程
- 对称密码体制和非对称密码体制
- Apache的安装配置及使用
- OpenSSL的使用
- HTTPS的认证机制
其中,HTTPS的认证机制分为两种:
- 双向验证:服务器和客户端都需要相互验证(常见于银行类网站)
- 单向验证:只需验证服务器端
本实验教程我们做的是单向验证。
实验环境
本教程采用阿里云服务器,操作系统为:CentOS release 6.8(与Ubuntu系统稍有区别)
理清三个关系和两个概念
-
客户端、服务器和CA机构的关系
在该实验中,我们需要在同一台电脑上同时扮演三个角色,即:客户端
、服务器
、CA机构
。也就是说在现实生活中,这三者都是分开的,但是在本实验中,我们要用一台计算机同时扮演这三个角色, 客户端由我们的浏览器扮演,服务器由我们的Apache扮演,CA机构由我们的根证书扮演 。 -
根证书和其他证书的概念
在网络关系中,是存在一个信任链条的,但必须有一个源头,因此在HTTPS的证书信任链条中,是有根证书、一级证书、二级证书以及后面的多级证书的。这些证书中,我们必须要假定根证书是绝对安全且值得信任的,才有后面信任链条的存在。因此在本实验中 根证书是自签名证书(自己认证自己),而服务器证书需要由根证书来签名 。
实验过程
第一步:安装Apache
-
下载安装Apache
yum install httpd
-
修改Apache的配置文件
配置文件位置在:/etc/httpd/conf/httpd.conf
主要改以下两个地方:
Listen 120.76.142.16:80 ServerName 120.76.142.16:80
-
开启Apache
httpd -k start
-
查看Apache是否配置成功
浏览器访问:
http://120.76.142.16/
,如果出现页面,则说明Apache配置成功
第二步:安装OpenSSL
一般 Linux 或者CentOS都会自带OpenSSL,没有的话则自行安装。
第三步:生成CA根证书
-
生成一个RSA密钥,为2048位长度(1024位已经被证明容易被破解),并将该密钥用DES对称加密,并输入加密密钥:qimingyuCA。
openssl genrsa -des3 -out root-ca.key 2048
这里输入的加密密钥是对RSA私钥的加密密钥
-
生成根证书签发请求文件,采用第一步生成的私钥进行签名
openssl req -new -key root-ca.key -out root-ca.req
这里生成证书签发请求文件需要填一些信息。
参数 -new
表示新证书签发请求
-
自签发根证书
openssl x509 -req -days 365 -signkey root-ca.key -in root-ca.req -out root-ca.cer
-
查看刚刚生成的根证书
openssl x509 -noout -text -in root-ca.cer
第四步:生成服务器端证书
-
生成服务器私钥,并将该密钥用DES对称加密,并输入加密密钥:qimingyuSERVER。
openssl genrsa -des3 -out server.key 2048
-
生成服务器证书请求签发文件
openssl req -new -key server.key -out server.req
填信息的时候注意这一栏要是你HTTPS网址的域名(红色部分为所填的内容)
Common Name (eg, your name or your server’s hostname) []: qimingyu.com
-
使用根证书签发服务端证书
openssl ca -config /usr/local/openssl/ssl/openssl.cnf -in server.req -out server.cer
- 注意这里要根据OpenSSL的配置文件的信息,新建目录及拷贝重命名过去,并且在serial里面填入相应的数值。如果签名不成功,报错匹配问题的,需要修改OpenSSL的配置文件。
- 注意这里服务器端证书的生成与前面根证书的生成不一样,这里服务器端的证书生成是用根证书进行签名的,而根证书的生成是自己给自己签名的。
-
验证生成的证书是否正确
openssl verify -CAfile root-ca.cer server.cer
第一个为根证书,第二个为需要验证的子证书。如果返回结果是OK,则证明证书生成正确。
第五步:安装Apache支持SSL模块
-
安装模块
mod_ssl
yum install mod_ssl -y
-
修改其配置文件
位置为:/etc/httpd/conf.d/ssl.conf
主要更改以下内容:
Listen 120.76.142.16:443
此时用HTTPS访问该网址,会出现不安全的报警
-
继续修改配置文件
主要修改服务器证书及密钥的位置,指定对位置
SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key
-
重启Apache服务器
httpd -k stop httpd -k start
此时会要求输入服务器的密码:qimingyuSERVER
-
验证是否成功
openssl s_client -connect 120.76.142.16:443 -CAfile /root/root-ca.cer
如果返回结果是OK,则证明实验成功
- 将根证书导入浏览器之后再进行访问,不再报警
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Axure教程:实现秒表循环
- ProtoPie教程:列表长滑实现删除
- 区块链Oracle预言机实现教程【含代码】
- 区块链Oracle预言机实现教程【含代码】
- ERC721使用教程:实现一个打怪游戏
- Python使用matplotlib实现数据可视化教程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。