关于什么是CA证书,以及如何使用Open-SSL申请和搭建CA证书,我们在之前的文章中已经有过介绍,这里不再赘述。若有疑问,可参考之前的文章。
Apache Httpd 2.2 实现https加密通讯实际生产中CA证书一般是向一些专业认证的国际机构来进行申请的。我们会模拟使用OpenSSL生成的证书,来实现Apache的安全加密通讯,这与实际生产中是类似的。
实验环境准备准备两台虚拟主机。他们的作用和角色分别如下图所示。
接下来,我们分两个部分进行,在主机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 []:此时如果我们去查看证书的内容话,是可以查看我们刚刚指定的这些信息的。
[root@localhost ~]#openssl x509 -in /etc/pki/CA/cacert.pem -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 17076170100312404196 (0xecfabe3b994470e4) Signature Algorithm: sha256WithRSAEncryption Issuer: C=CN, ST=shandong, L=qingdao, O=pojun.tech, OU=Opt, CN=ca.pojun.tech Validity Not Before: Sep 29 03:40:10 2017 GMT Not After : Sep 24 03:40:10 2037 GMT Subject: C=CN, ST=shandong, L=qingdao, O=pojun.tech, OU=Opt, CN=ca.pojun.tech *******************省略了公钥和签名信息************************* 3、创建颁发证书必须的两个文件如果不提前创建这两个文件,那么在生成证书的过程中会出现错误。
我们将文件创建在配置文件中指定的路径下面。
生成证书索引数据库文件 touch /etc/pki/CA/index.txt
指定第一个颁发证书的序列号 echo 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打开 /etc/httpd/conf.d/ssl.conf ,就会发现,mod_ssl已经帮助我们添加了证书文件,只不过这个证书文件没有任何的意义,我们接下来就是要申请证书,并把他们替换掉。
2、生成私钥文件