Apache Httpd 2.2 实现https加密通讯

实际生产中CA证书一般是向一些专业认证的国际机构来进行申请的。我们会模拟使用OpenSSL生成的证书,来实现Apache的安全加密通讯,这与实际生产中是类似的。

实验环境准备

主机A:172.16.0.57-------->httpd服务器

主机B:172.16.0.58--------->CA openssl

接下来,我们分两个部分进行,在主机B上搭建CA证书环境,然后在主机A上配置证书环境。

主机B上搭建CA证书环境

CA证书环境中,私钥的名称以及存放路径,还有证书的名称和存放路径都是有一定规则的,所以,如果不明白的话,可以查看/etc/pki/tls/openssl.cnf 文件

1、构建私钥文件

[root@localhost ~]#(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem  2048 )Generating RSA private key, 2048 bit long modulus
.............................................+++
.........................+++
e is 65537 (0x10001)

2、根据私钥文件,创建自签名的根CA证书

证书的名字必须是cacert.pem ,而且存放路径必须是/etc/pki/CA/cacert.pem

[root@localhost ~]#openssl req -new -x509 -key  /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
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) []:shandong
Locality Name (eg, city) [Default City]:qingdao
Organization Name (eg, company) [Default Company Ltd]:pojun.tech
Organizational Unit Name (eg, section) []:Opt
Common Name (eg, your name or your server's hostname) []:ca.pojun.tech
Email Address []:

3、此时如果我们去查看证书的内容话,是可以查看我们刚刚指定的这些信息的。

[root@localhost ~]#openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
Certificate:Data:Version: 3 (0x2)Serial Number: 17076170100312404196 (0xecfabe3b994470e4)Signature Algorithm: sha256WithRSAEncryptionIssuer: C=CN, ST=shandong, L=qingdao, O=pojun.tech, OU=Opt, CN=ca.pojun.techValidityNot Before: Sep 29 03:40:10 2017 GMTNot After : Sep 24 03:40:10 2037 GMTSubject: C=CN, ST=shandong, L=qingdao, O=pojun.tech, OU=Opt, CN=ca.pojun.tech    *******************省略了公钥和签名信息*************************

3、创建颁发证书必须的两个文件

如果不提前创建这两个文件,那么在生成证书的过程中会出现错误。
我们将文件创建在配置文件中指定的路径下面。

touch /etc/pki/CA/index.txtecho 01 > /etc/pki/CA/serial

在主机A上申请证书

1、首先安装mod_ssl动态模块

首先在主机A上安装mod_ssl 模块 ,然后我们来查看一下这个模块里面都包含哪些内容

[root@CentOS6 ~]$rpm -ql mod_ssl
/etc/httpd/conf.d/ssl.conf  # 配置文件
/usr/lib64/httpd/modules/mod_ssl.so  # Apache 动态模块
/var/cache/mod_ssl
/var/cache/mod_ssl/scache.dir
/var/cache/mod_ssl/scache.pag
/var/cache/mod_ssl/scache.sem

2、生成私钥文件

因为私钥文件是给Web服务器来使用的,所以私钥文件可以存放在web服务器的配置目录下。这样方便管理 。

# 首先创建一个目录用来管理生成的私钥和证书请求文件,可根据自己的实际情况而定
[root@centos6 ~]$ mkdir /etc/httpd/conf.d/ssl# 生成自己的私钥文件
[root@centos6 ~]$(umask 066; openssl genrsa -out /etc/httpd/conf.d/ssl/httpd.key 1024)
Generating RSA private key, 1024 bit long modulus
.++++++
...++++++
e is 65537 (0x10001)

3、生成证书请求文件

生成自己的证书请求文件,这里的请求文件是要传给主机B(根CA)来申请证书的。其中的域名采用了范域名解析。
也就是说,当我们把所有的环境配置结束之后,就应该使用https://*.a.com的方式来访问网站,这样话,服务器就会自动采用加密的方式来处理我们的请求。

# 生成自己的证书申请文件,以 .csr 结尾的文件。
[root@centos6 ssl]$openssl req -new -key /etc/httpd/conf.d/ssl/httpd.key -out /etc/httpd/conf.d/ssl/httpd.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]:CN
State or Province Name (full name) []:shandong
Locality Name (eg, city) [Default City]:yantai
Organization Name (eg, company) [Default Company Ltd]:pojun.tech
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server's hostname) []:*.a.com
Email Address []:Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

4、将证书请求文件发送给证书颁发机构(主机B)

我们需要将证书请求文件发送给证书颁发机构。

[root@centos6 ssl]$scp /etc/httpd/conf.d/ssl/httpd.csr  172.18.2.77:/etc/pki/CA/
root@172.18.2.77's password:
httpd.csr                                        100%  647     0.6KB/s   00:00

5、在根CA(主机B)颁发证书

我们需要将证书请求文件发送给证书颁发机构。

# 根据主机A提交的证书申请内容,生成证书
[root@localhost ~]#openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
*****************中间省略了输出信息***********************

将生成的证书文件颁发给申请者(主机A)

#  前面我们说过,证书文件都存放在/etc/httpd/conf.d/ssl/目录下
[root@localhost ~]#scp  /etc/pki/CA/certs/httpd.crt  172.18.2.66:/etc/httpd/conf.d/ssl/
The authenticity of host '172.18.2.66 (172.18.2.66)' can't be established.
RSA key fingerprint is 00:c0:e5:a6:39:e9:a7:bb:1b:f4:ab:0d:75:9b:38:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.18.2.66' (RSA) to the list of known hosts.
root@172.18.2.66's password:
httpd.crt                                         100% 3714     3.6KB/s   00:00

同时将根CA的证书也发送给Web服务器(主机A)。这一点很重要。

[root@localhost ~]#scp  /etc/pki/CA/cacert.pem   172.18.2.66:/etc/httpd/conf.d/ssl/
root@172.18.2.66's password:
cacert.pem                                   100% 1334     1.3KB/s   00:00

在主机A上配置Web服务器

首先配置Web服务器的私钥文件和证书文件,编辑”/etc/httpd/conf.d/ssl.conf”

然后将根CA的证书路径,配置在配置文件中。

配置虚拟机主机站点

在/etc/httpd/conf.d/目录下创建一个以.conf结尾的文件,并写上:

在ssl.conf文件中进行配置:

我这里是在windows系统上操作的,需要在windows的hosts文件中添加ip映射才可以

接下来在浏览器中添加根证书

最后我们来访问一下:

好了,这样子就配置成功了。

转载于:https://www.cnblogs.com/FengGeBlog/p/10498775.html

apache配置CA证书通过https通信相关推荐

  1. 利用openssl自建ca并且使apache2用自建的ca证书进行https链接(自用,,,

    参考了信安实践--自建CA证书搭建https服务器 - LiBaoquan - 博客园 (cnblogs.com) 加一些关于apache的命令: sudo systemctl start apach ...

  2. 信息安全实践Lab1-自建CA证书搭建https服务器

    title: 信息安全实践Lab1-自建CA证书搭建https服务器 date: 2021-12-21 02:44:40 tags: 信息安全 categories: 信息安全实践 信息安全实践Lab ...

  3. IIS配置SSL证书实现https

    .net项目,http升级为https,分为两种情况:1.有域名 2.无域名,网站通过ip访问 有域名 大多数网站是这种情况,通过域名访问系统,有域名就可以去腾讯云或者其他云平台申请经过CA认证的SS ...

  4. 创建Apache的CA证书

    自建Apache的CA证书 (环境:Centos7) PS:建议实验前把防火墙和SELinux都关掉. - 安装apache环境依赖 [root@qmfz ~]# yum -y install mod ...

  5. windows配置NGINX、NGINX配置SSL证书通过HTTPS访问、使用HTTPS通过NGINX代理访问服务器端项目

    1.windows配置nginx 1)在nginx官网下载稳定版nginx,nginx官网:http://nginx.org/en/download.html 2)解压文件,注:存放目录最好不要带有中 ...

  6. Apache Httpd 2.2 配置CA证书,实现Https加密通讯

    什么是CA证书 关于什么是CA证书,以及如何使用Open-SSL申请和搭建CA证书,我们在之前的文章中已经有过介绍,这里不再赘述.若有疑问,可参考之前的文章. http://www.pojun.tec ...

  7. TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性...

    起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于 ...

  8. 实战:搭建CA认证中心,使用CA证书搭建HTTPS

    CA认证中心服务端:xuegod63.cn                         IP:192.168.0.61 客户端                  :xuegod64.cn      ...

  9. 自建CA证书搭建https服务器

    由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...

最新文章

  1. 充分的总结分析系统,来调整CMDB及流程。
  2. Android开发之使用SharedPreferences实现QQ登陆的选项框记忆功能(源代码分享)
  3. 【GIF动画+完整可运行源代码】C++实现 计数排序——十大经典排序算法之八
  4. javapanel根据内部组件_[译]避免在unmounted组件上调用setState
  5. Mac/Linux系统连接远端服务器以及相同IP地址的服务器账号密码重置,ssh失败问题
  6. 想要AI优先?数据优先才行
  7. IIS7.X上传文件大小受限制解决方法
  8. vb.net word 自定义工具栏_Word双面快速简捷打印?
  9. 数据库实验2:数据库的建立与维护
  10. 继承、私有属性-Python
  11. Android进程管理
  12. 使用Cgroup在Docker中进行资源管理
  13. IP 点分十进制表示法
  14. uboot_v2016 版本中fw_printenv的编译问题
  15. mysql索引失效的几种情况
  16. 微信指纹支付原理浅析
  17. 基于OpenCV3.0的车牌识别系统设计(二)--车牌提取
  18. linux暂停命令 pause_linux操作命令:暂停进程
  19. python mysql library,python调用mysql报错解决方案
  20. 关于mysql的题目_关于MySQL的经典例题50道 答案参考

热门文章

  1. VisualVM——JDK自带的性能分析工具
  2. sql必知必会(第四版) 学习笔记一
  3. 增大胸围!Mr Burning带你在家全方位虐胸!
  4. SIFT原理与源码分析
  5. 数字图像处理:第九章 线性系统、卷积、傅立叶变换
  6. 编程之美-寻找发帖“水王”方法整理
  7. 工作总结-基于R的数据分析
  8. 专访阿里云萧少聪、曹龙:一家云厂商对入局数据库做了哪些思考?
  9. 中国量子通信再获突破,潘建伟团队完成人类首次洲际量子通信
  10. MySQL主从复制故障案例一