A-A+

Linux实现https方式访问站点

2016年01月21日 站长资讯 暂无评论

一、再linux系统下实现SSL会话的简化过程,主要有5个步骤:

(1) 客户端发送可供选择的加密方式,并向服务器请求证书;

(2) 服务器端发送证书以及选定的加密方式给客户端;

(3) 客户端取得证书并进行证书验正:

如果信任给其发证书的CA:

(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;

(b) 验正证书的内容的合法性:完整性验正

(c) 检查证书的有效期限;

(d) 检查证书是否被吊销;

(e) 证书中拥有者的名字,与访问的目标主机要一致;

(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;

(5) 服务用此密钥加密用户请求的资源,响应给客户端;

注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机。

二:配置httpd支持https

(1) 为服务器申请数字证书;

测试:通过私建CA发证书

(a) 创建私有CA

(b) 在服务器创建证书签署请求

(c) CA签证

(2) 配置httpd支持使用ssl,及使用的证书;

# yum -y install mod_ssl

配置文件:

/etc/httpd/conf.d/ssl.conf

DocumentRoot

ServerName

SSLCertificateFile

SSLCertificateKeyFile

(3) 测试基于https访问相应的主机;

# openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]

三:实验过程:

(1)创建CA证书

  1. #(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)  
  2. #touch /etc/pki/CA/index.txt  
  3. #echo 01 >/etc/pki/CA/serial      
  4. #openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 7300  
  5. //切换到httpd服务主机  
  6. #mkdir /etc/httpd/certs  
  7. #(umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)  
  8. #openssl req -new -x509 -key -out /etc/httpd/ssl/httpd.csr   
  9. //证书文件发送到CA主机  
  10. #scp /etc/httpd/ssl/httpd.csr root@199.100.77.132:/tmp  
  11. #openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/www.zenghui.wang.crt -days 365  
  12. #scp  /etc/pki/CA/certs/www.zenghui.wang.crt 199.100.77.135:/etc/httpd/certs  

针对Apache httpd软件默认配置中:

httpd软件默认没有使用ssl模块,需要安装相应的模块程序包

[root@www certs]# yum install mod_ssl -y

[root@www ~]# rpm -qa mod_ssl

mod_ssl-2.2.15-39.el6.centos.x86_64

安装之后会在/etc/httpd/conf.d/目录下生成ssl.conf的配置文件,我们配置https就在此文件中配置:

配置ssl.conf文件,重要配置都在下面文件中了:

  1. [root@www conf.d]#vim  /etc/httpd/conf.d/ssl.conf  
  2. LoadModule ssl_module modules/mod_ssl.so  
  3. Listen 443  
  4. <VirtualHost 172.16.31.31:443>  
  5.          DocumentRoot"/web/vhosts/www2"  
  6.          ServerName www2.stu31.com:443  
  7.          SSLEngineon  
  8.          SSLCertificateFile /etc/httpd/certs/httpd.crt  
  9.          SSLCertificateKeyFile /etc/httpd/certs/httpd.key  
  10. </VirtualHost>  

测试文件语法:

[root@www conf.d]# httpd -t

Syntax OK

重启httpd服务

[root@www conf.d]# service httpd restart

Stopping httpd:[ OK ]

Starting httpd:[ OK ]

查看服务监听端口:

[root@www conf.d]# ss -tunl |grep 443

tcp LISTEN 0 128 :::443 :::*

到windows端进行测试:

先将CA服务器的证书安装进windows中;将cacert.pem发送到windows中,改名cacert.crt,安装证书。

标签:

给我留言