Loading

基于openssl的https服务配置

环境:

CA服务器:192.168.1.121

WEB服务器: 192.168.1.107

一、在CA服务器上生成自签证书

1.生成根私钥

(umask 077;openssl genrsa -out private/cakey.pem 2048)

2.生成自签证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 730

3.创建所需的目录和文件

touch index.txt

echo 01 > serial

二、在WEB服务器端生成证书颁发请求,并发送给CA

1.创建证书保存目录

mkdir /etc/httpd/ssl

2.生成私钥

(umask 077;openssl genrsa -out httpd.key)

3.生成证书请求

openssl req -new -key httpd.key -out httpd.csr

需要注意的是这个填写的除开Commn Name,Email Adress外都要和CA服务器上的相同,否则在下面的签署过程中会报错。这个Common Name是Web服务器的虚拟主机名。

4.发送证书请求给CA服务器

scp httpd.csr 192.168.1.121:/tmp


三、在CA服务器上签署请求证书

1.签名

openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 730

2.查看变化的信息

查看序列

查看新生成证书

3.发送证书给WEB服务器

scp /tmp/httpd.crt 192.168.1.107:/etc/httpd/ssl

删除tmp目录下的证书

rm -rf /tmp/httpd.c*

四、配置服务器使用证书

1.安装ssl模块

yum -y install mod_ssl

2.编辑ssl.conf

<VirtualHost 192.168.1.107:443>
DocumentRoot "/var/www/html"
ServerName www.ihs.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/httpd/httpd.crt
SSLCertificateKeyFile /etc/httpd/httpd.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

重启Apache

3.由于www.ish.com并不是真实的域名,故需要在hosts文件下加入该域名进行本地解析

访问https://www.ihs.com,会出现证书错误,这是由于证书是私有CA颁发的,故需要做如下步骤:

将CA服务器上的证书cacert.pem导出到本地,改名为cacert.crt,点击再导入浏览器

退出浏览器,再重新访问https://www.ihs.com/

 

出现了一把锁,证书错误提示也消失了。

 

 

参考文档:

http://disablessl3.com/

posted @ 2016-06-02 01:46  头痛不头痛  阅读(2628)  评论(0编辑  收藏  举报