前言

在上一篇博客中我说明了,openssl的工作原理与私有CA的建立不懂的朋友可以去看一下(http://freeloda.blog.51cto.com/2033581/1216176),下面我说一下基于openssl的https的配置!

1. https 的工作原理

首先我得简单的说一下https工作的基本原理,如下图

基于openssl的https服务配置

  • 首先,肯定是 client 向服务器发出请求,经过 tcp 的三次握手与 server 建立连接

  • 建立连接后,client 与 server 协商使用哪种加密方式加密

  • 协商完成后,server 发送证书给 client ,client 验证证书

  • 验证完成后,双方开始加密通信


从上面的过程当中我们可以看到,双方通信必须得有证书,那证书哪里来,从上图中我们可以看到, server 得向 CA 颁发机构申请,client 得信认 CA 机构,并下载CA证书公钥,至此 client 与 server 才开始通信!

2. 实验步骤

下面我说一下,实验的简单步骤,帮大家理清思路!

第一步,创建CA机构      
  修改配置文件      
  自己生成**      
  生成自签证书

第二步,Server端 (httpd)  
  生成一对**      
  生成证书颁发请求 --> *.csr 文件      
  将请求发给CA

第三步,CA机构    
  签署此证书      
  传送给客户端

至此CA申请完成,下面我说一下具体过程!

3. 具体过程如下

首先说一下实验环境(共三台主机),

192.168.18.211 CA 颁发机构(openssl)

192.168.18.212 Server服务器 (apache)

192.168.18.120 Windows 7 测试机 (IE浏览器)

======================================================================

创建私有CA机构 192.168.18.211

(1). 修改openssl配置文件

vim /etc/pki/tls/openssl.cnf
dir = /etc/pki/CA #工作目录 ,此处需要指定,不然给客户到签证的时候必须在特定的目录下才能实现    
certs = $dir/certs #客户端证书目录     
crl_dir = $dir/crl #证书吊销列表     
database = $dir/index.txt #证书记录信息
new_certs_dir = $dir/newcerts #新生成证书的目录    
certificate = $dir/cacert.pem #CA自己的证书位置     
serial = $dir/serial #***     
crlnumber = $dir/crlnumbe #证书吊销列表***
crl = $dir/crl.pem #证书吊销列表文件    
private_key = $dir/private/cakey.pem #CA自己的私钥     
RANDFILE = $dir/private/.rand #随机数文件
[ req_distinguished_name ]    
countryName                     = Country Name (2 letter code)     
countryName_default             = CN #国家     
countryName_min                 = 2     
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)    
stateOrProvinceName_default     = shanghai #省份
localityName                    = Locality Name (eg, city)    
localityName_default            = xuhui #地区
0.organizationName              = Organization Name (eg, company)    
0.organizationName_default      =          #公司
organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  =Tech #部门
:wq #保存退出

(2). 生成**与证书

cd /etc/pki/CA  
(umask 077; openssl genrsa -out private/cakey.pem 2048) #生成**   
openssl req -new -x509 -key private/cakey.pem -out cacert.pem #生成自签证书

基于openssl的https服务配置

mkdir certs newcerts crl #建立相关的目录   
touch index.txt   
touch serial #建立***文件   
echo 01 > serial #写入起始***

===============================================================================

安装与配置 Apache 服务器 192.168.18.212

(1). 安装 Apache

yum install –y httpd*

(2). 启动Apache

service httpd start

(3). 测试

基于openssl的https服务配置

(4). 申请CA证书

cd /etc/httpd #web服务器的配置目录  
mkdir ssl #创建ssl目录   
cd ssl #每一种服务要想使用证书,必须有私钥,每一种应用都需要自己的证书   
(umask 077; openssl genrsa -out httpd.key 1024)#给自己生成**   
openssl req -new -key httpd.key -out httpd.csr #证书签署请求文件,机构和其他名字必须和CA颁发机构上的一样

基于openssl的https服务配置

scp ./httpd.csr [email protected]:/tmp #将证书申请发送到CA颁发机构上

(5). CA 颁发机构签名并签发    

openssl ca -in httpd.csr -out httpd.crt -days 3650 #CA签名,签名以后才可以使用

基于openssl的https服务配置

(6). 将生成的证书发送给Server

scp ./httpd.crt [email protected]:/etc/httpd/ssl/httpd.crt

(7). 安装httpd和ssl联系的装载模块mod_ssl

yum install mod_ssl #安装
service httpd restart #重启服务

修改ssl配置文件

vim /etc/httpd/conf.d/ssl.conf
主要内容如下:
LoadModule ssl_module modules/mod_ssl.so-装载配置模块  
Listen 443--监听443端口   
AddType application/x-x509-ca-cert .crt 增加支持证书   
AddType application/x-pkcs7-crl .crl 增加识别证书吊销列表   
SSLPassPhraseDialog builtin //ssl生成阶段的会话机制   
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) 缓存空间   
SSLSessionCacheTimeout 300 缓存时长   
<VirtualHost _default_:443> --定义虚拟主机   
ServerName NAME ---虚拟主机的名字   
DocumentRoot ----文件路径   
ErrorLog logs/ssl_error_log --错误日志   
TransferLog logs/ssl_access_log --ssl的登陆日志   
LogLevel warn ---日志级别   
SSLEngine on ---启用或关闭ssl工具   
SSLProtocol all -SSLv2---支持的协议   
SSLCertificateFile /etc/pki/tls/certs/localhost.crt--证书文件全路径   
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key--证书私钥全路径
其中两项我们得修改一下:
SSLCertificateFile /etc/httpd/ssl/httpd.crt #证书
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key #私钥
httpd –t #检查配置文件
service httpd restart #重启服务器

===============================================================================

测试效果:

(1). IE 访问

https://192.168.18.212 #效果如下

基于openssl的https服务配置

因为我们这里没有CA服务器的证书,所以浏览器会发出警告,下面我们安装一下证书!

(2). 从CA服务器上下载CA自签证书cacert.pem,并重新修改后缀.crt后导入到本机,效果如下

基于openssl的https服务配置

基于openssl的https服务配置

基于openssl的https服务配置

基于openssl的https服务配置

基于openssl的https服务配置

证书安装完成,我再测试一下效果,

基于openssl的https服务配置

这样所有过程测试完成!

转载于:https://blog.51cto.com/freeloda/1218939

相关文章:

  • 2021-07-06
  • 2021-11-10
  • 2021-11-10
  • 2021-07-27
  • 2022-01-22
  • 2021-06-28
  • 2021-12-25
  • 2021-12-24
猜你喜欢
  • 2022-12-23
  • 2021-05-14
  • 2021-12-11
  • 2021-07-02
  • 2021-12-18
  • 2021-05-21
相关资源
相似解决方案