分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

基于httpd建立私有CA实现https加密连接

发布时间:2023-09-06 01:17责任编辑:彭小芳关键词:http

    有关于https是什么,点击连接查看百度百科:https://baike.baidu.com/item/https/285356?fr=aladdin

一、准备工作

    在开始实验之前,我们要准备至少两台主机还有自身的计算机,一台作为服务器,另外一台作为私有CA机构,我们要保证这两台主机之间可以互相ping通,并且都能于真实计算机ping通,也就是这三台机器能够互相通信。

    在这里,我准备了两台虚拟机,操作系统分别为CentOS 7 和 CentOS 6 ,CentOS 7 使用的IP地址为172.16.7.100,CentOS 6 使用的IP地址为172.16.128.4。我将CentOS 7 作为提供http服务的服务器,CentOS 6 作为CA机构,三台机器的功能如图:

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/08/74/wKiom1nh7I3zKeV4AAA7pE9XUbo768.png-wh_500x0-wm_3-wmp_4-s_2730416924.png" title="TIM截图20171014185159.png" alt="wKiom1nh7I3zKeV4AAA7pE9XUbo768.png-wh_50" />

二、建立CA

    首先在IP为172.16.128.4的主机上建立CA,并将自己的信息写到认证中去:

~]# cd /etc/pki/                                                            #切换工作目录CA]# touch index.txt                                #然后再当前目录下创建两个文件CA]# echo 01 > serial                               #在认证时会用到,如果不创建会报错CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)                     #创建私钥CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300   #认证自己

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/08/75/wKiom1nh_-iANNelAAC6CciaKHw638.png-wh_500x0-wm_3-wmp_4-s_1575836799.png" title="TIM截图20171014201509.png" alt="wKiom1nh_-iANNelAAC6CciaKHw638.png-wh_50" />

三、创建申请

    CA建立完了,我们就要开始建立自身的认证了,首先回到当作服务器的主机(172.16.7.100),找到一个目录来存储认证文件,在这里我将“/myweb/wordpress/ssl”作为存放目录(随便放,后面使用绝对路径引用,放在一个安全的地方),然后使用下面的命令创建私钥:

ssl]# (umask 077;openssl genrsa -out httpd.key 1024)ssl]# openssl req -new -key httpd.key -out httpd.csr

    在填写信息的时候注意:国家要求两个字符,服务器填写虚拟主机的域名

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/A7/29/wKioL1niAXTjw1UIAADX99UBd78874.png-wh_500x0-wm_3-wmp_4-s_2713828128.png" title="TIM截图20171014203333.png" alt="wKioL1niAXTjw1UIAADX99UBd78874.png-wh_50" />

四、申请及审批

    认证文件都创立完成之后,就可以把服务器上生成的申请信息发送到CA上进行认证,使用下面这条命令可以方便的将文件上传:

ssl]# scp httpd.csr root@172.16.128.4:/tmp/          #此命令在172.16.7.100(服务器上执行)

    在一段时间等待之后,就会提示要输入密码,在输入密码之后再等待一段时间,出现如图所示画面就说明文件上传成功:

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/A7/29/wKioL1niAquS3DsCAABCx4drXo4327.png-wh_500x0-wm_3-wmp_4-s_2567521466.png" title="TIM截图20171014203746.png" alt="wKioL1niAquS3DsCAABCx4drXo4327.png-wh_50" />

    切换到CA(172.16.128.4)上执行下面的命令完成认证(根据提示选择yes即可):

CA]# openssl ca -in /tmp/httpd.csr -out certs/myweb.wordpress.com.crt -days 365

    在认证完成之后,在通过scp命令将认证完成生成的文件传送回去:

CA]# scp certs/myweb.wordpress.com.crt 172.16.7.100:/myweb/wordpress/ssl/

    回到服务器(172.16.7.100)上,即可在“/myweb/wordpress/ssl”里边看到myweb.wordpress.com.crt文件,到这里私有CA和证书颁发就完成了。

五、浏览器查看

    证书颁发完成,但是我们还是不能在浏览器中看到,如果想要在浏览器里使用https,需要“mod_ssl”,使用下面的命令来安装:

~]# yum install -y mod_ssl

    在安装完成之后,就会在“/etc/httpd/conf.d/”下生成一个配置文件:ssl.conf,编辑这个文件:

~]# vim /etc/httpd/conf.d/ssl.conf

    将文件中下面两个选项(一般分别在101行和108行)改成下面这样(这两个文件放在哪就改成哪):

SSLCertificateFile /myweb/wordpress/ssl/myweb.wordpress.com.crtSSLCertificateKeyFile /myweb/wordpress/ssl/httpd.key

    改完之后保存退出,重新加载httpd配置:

~]# systemctl restart httpd

    使用命令“ss -tnl”查看,可以看到443端口已经被监听了,这个端口就是默认的https端口:

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/08/75/wKiom1niCLTxzvmbAACEpuEMUvo807.png-wh_500x0-wm_3-wmp_4-s_3091349854.png" title="TIM截图20171014205210.png" alt="wKiom1niCLTxzvmbAACEpuEMUvo807.png-wh_50" />

    到此https就配置完成,下面进行测试,在“/etc/httpd/conf.d/”中创建一个虚拟主机:

ssl]# vim /etc/httpd/conf.d/vhost.conf

    写入以下内容:

<VirtualHost *:443>        ServerName myweb.wordpress.com        DocumentRoot /myweb/wordpress        ErrorLog logs/wordpress-error_log        CustomLog logs/wordpress-access_log combiend        DirectoryIndex index.html        <Directory "/myweb/wordpress">                Options Indexes                AllowOverride   None                Require all granted        </Directory></VirtualHost>

    然后创建目录“/myweb/wordpress”,并创建一个主页:

~]# mkdir /myweb/wordpress~]# echo "wordpress Page" > /myweb/wordpress/index.html

    最后在真实计算机上使用浏览器打开“https://myweb.wordpress.com/”即可看到如下画面(要修改hosts文件,参考前面的博客):

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/08/75/wKiom1niCzbAEJ2dAAC5cGRCENI861.png-wh_500x0-wm_3-wmp_4-s_3472679924.png" title="TIM截图20171014210334.png" alt="wKiom1niCzbAEJ2dAAC5cGRCENI861.png-wh_50" />

    可以看到都是刚才注册的信息,报错是因为这个CA为私有,无法经过它的验证。但是在局域网内就可以使用这个证书来验证信息来源的可靠性了。






基于httpd建立私有CA实现https加密连接

原文地址:http://11142243.blog.51cto.com/11132243/1972413

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved