为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

原文地址:https://www.cnblogs.com/kyooo/p/13301439.html