为Apache搭建HTTPS
a.首先查看是否安装OpenSSL,如果已安装跳过本阶段。通常CentOS 7 默认安装
b.通过http://www.openssl.org/source/openssl-1.0.2j.tar.gz 下载OpenSSL,可以下载最新版本,或者使用YUM进行在线安装
c.在文件夹下解压缩,命令:tar -xzf openssl-1.0.2j.tar.gz,得到openssl-1.0.2j文件夹
d.进行解压的目录:cd openssl-1.0.2j 设定Openssl 安装,(--prefix)参数为欲安装之目录,也就是安装后的档案会出现在该目录下:执行命令: ./config --prefix=/usr/local/openssl
e.执行命令./config -t
f.执行 make install 编译Openssl
g.安装过程中可能会出错,会提示GCC,所以需要通过yum -y install gcc 安装GCC
OpenSSL常见用法
a.对称加密,对称加密需要使用标准命令enc
常用选项有:
-in filename:指定要加密的文件存放路径
-out filename:指定加密后的文件存放路径
-salt:自动插入一个随机数作为文件内容加密,默认选项
-e:可以指明一种加密算法,若不指定的话将使用默认算法加密
-d:解密,解密时可以指定算法,若不指定则使用默认算法,但一定要与加密时的算法一致
-a/-base64:使用base64编码格式
示例:
加密:openssl enc -e -des3 -a -salt -in test -out test_1
解密:openssl enc -d -des3 -a -salt -in test_1 -out test_2
b.单向加密
单向加密需要使用dgest
常用选项有:
[-md5|-md4|....]:指定一种加密算法
-out filename:将加密的内容保存到指定文件中
示例:
openssl dgst -md5 fstab
echo "jia mi nei rong" | openssl dgst -md5
c.生成密钥
生成随机数需要用到标准命令 rand
常用选项:
-out file:生成随机数保存至指定文件中
-base64:使用base64 编码格式
-hex:使用16进制编码格式
示例:
openssl rand -hex 10
openssl rand -base64 10
openssl rand -base54 10 -out aa
d.生成密钥对
首先使用genrsa 标准生成私钥,然后用rsa标准命令从私钥中提取公钥
常用选项:
-out filename:将生成私钥保存至指定的文件中
-des |-des3|-idea:不同的加密算法
numbits:指定生成私钥的大小,默认是2048
一般情况密钥文件权限要控制好,只能自己读写,因此可以使用umask命令设置私钥权限
(umask 007; openssl genrsa -out 123.txt 4096)
Rsa用法常用选项
-in filename :指定私钥文件
-out filename :指定将提取出的公钥保存至指定文件中
-pubout :根据私钥提取公钥
openssl rsa -in 123.txt -out 123.pub -pubout
那么现在就要开始搭建HTTPS
(1)创建CA和申请证书
使用openssl工具创建CA证书和申请证书时,需要先查看配置文件,因为配置文件中对证书的名称和存放位置等相关信息都做了定义,参考/etc/pki/tls/openssl.cnf文件
(2)创建自签证书
创建为CA提供所需的目录及文件
cd /etc/pki/CA
mkdir -pv {certs,crl,newcerts,private}
touch {serial,index.txt}
指明证书的开始编号
echo 01 >> serial
生成根证书私钥(私钥的文件名与存放位置要与配置文件中的设置相匹配,生成证书填写相应信息)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 365
-new:表示生成一个新证书的签署请求
-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
-key:生成请求时用到的私钥文件
-out:证书的保存路径
-days:证书的有效期限
(3)颁发证书
在需要使用证书的主机上生成证书请求,以httpd服务为例,步骤如下:
第一步:在需要使用证书的主机上生成私钥,这个私钥文件的位置可以随意定
第二步:生成证书签署请求
第三部:将请求通过可靠方式发送给CA主机
(umask 077; openssl genrsa -out test.key 2048)
openssl req -new -key test.key -out test.csr -days 365
CA服务器拿到证书签署请求文件后颁发证书,这一步是在CA服务器上做的
#颁发证书
openssl req -new -x509 -key test.key -out test.crt -days 365
安装mod_ssl
yum install mod_ssl
安装完成后在/etc/httpd/conf.d目录下自动生成ssl.conf,找到下面两行信息,并修改
SSLCertificateFile /etc/pki/CA/certs/test.crt #修改并指向自己生成的crt文件
SSLCertificateKeyFile /etc/pki/CA/test.key #修改指向自己生成的key文件
保存并重启httpd服务,此时可以通过Https 和http都可以访问Apache主页。要想关闭Http访问,只需要在/etc/httpd/conf/httpd.conf配置文件加上
SSLEngine On
SSLCertificateFile /etc/pki/CA/certs/test.crt
SSLCertificateKeyFile /etc/pki/CA/test.key