摘要:
penSSL是使用非常广泛的SSL的开源实现。由于其中实现了为SSL所用的各种加密算法,因此OpenSSL也是被广泛使用的加密函数库。 1.1 SSL1.1 SSL1.1 SSL1.1 SSL SSL(Secure Socket Layer)安全协议是由Netscape公司首先提出,最初用在保护Navigator浏览器和Web服务器之间的HTTP通信(即HTTPS)。后来SSL协议成为传输层安全通信事实上的标准,并被IETF吸收改进为TLS(Transport Layer Security)协议。 SSL/TLS协议位于TCP协议和应用层协议之间,为传输双方提供认证、加密和完整性保护等安全服务。SSL作为一个协议框架,通信双方可以选用合适的对称算法、公钥算法、MAC算法等密码算法实现安全服务
OpenSSL是著名的SSL的开源实现,是用C语言实现的。 OpenSSL的前身是SSLeay,一个由Eric Young开发的SSL的开源实现,支持SSLv2/v3和TLSv1。 伴随着SSL协议的普及应用,OpenSSL被广泛应用在基于TCP/Socket的网络程序中,尤其是OpenSSL和Apache相结合,是很多电子商务网站服务器的典型配置。
本文操作主要分为以下几部分:
1,架设CA证书服务器
2,架设web服务器
3,在web服务器上生成证书签署请求 申请CA证书服务器签署
4,导入签署证书,完成https加密访问
签署证书时提示信息解释:
Country Name (2 letter code) [GB]: 指定国家 CN
State or Province Name (full name) [Berkshire]: 指定省份
Locality Name (eg, city) [Newbury]: 指定城市名称
Organization Name (eg, company) [My Company Ltd]: 公司名称
Organizational Unit Name (eg, section) []: 指定部门 tech技术部
Common Name (eg, your name or your server's hostname) []: 指定主机名称,必须写正确主机名
Email Address []: 邮件地址
证书配置文件选项解释:
/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 自己证书
serial = $dir/serial 证书序列号
crlnumber = $dir/crlnumber 证书吊销列表的序列号
crl = $dir/crl.pem 当前证书吊销列表的文件
private_key = $dir/private/cakey.pem CA自己的私钥
RANDFILE = $dir/private/.rand 随机数文件
default_days = 365 证书默认有效时间
default_crl_days= 30 证书吊销列表存放时间
配置过程:
172.16.163.1 做CA证书服务器 简称A主机
172.16.163.10 做web服务器 简称B主机
一下Axx和Bxx表示在A主机上操作,xx 表示 0-9 的数字,意思是第xx步操作
这台服务器首先要装有httpd,为了方便测试先使用 yum install -y httpd 安装即可。
A1, 生成私钥
cd /etc/pki/CA
(umask 077; openssl genrsa -out private/cakey.pem 2048)
A2,生成自签证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
A3,修改 vim /etc/pki/tls/openssl.cnf
dir = /etc/pki/CA
A4,创建所需的目录和文件
mkdir certs crl newcerts
touch index.txt
echo 01 > serial
B5,使web服务器支持ssl 功能
yum install -y mod_ssl
B6,创建一个存放证书的文件夹
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
B7,为web服务器生成秘钥
(umask 077; openssh genrsa 1024 > httpd.key)
B8,生成证书签署请求
openssl req -new -key httpd.key -out httpd.csr
注意:#Common Name (eg, your name or your server's hostname) []:www.b.com
填写此项时候一定要写准确主机名
B9,把签署请求发至CA上 签署
scp httpd.csr 172.16.163.1:/tmp
A10, 在CA服务器上签署 CA证书
openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3650
A11,查看证书是否签署完毕
cat /etc/pki/CA/index.txt
A12,把签署完毕的证书发给 web服务器
scp /tmp/httpd.crt 172.16.163.10:/etc/httpd/ssl
A13,删除CA服务器/tmp/下的证书签署文件,这里是为了安全期间
rm -rf /tmp/*
B14, 编辑/etc/httpd/conf.d/ssl.conf
修改此项<VirtualHost _default_:443> 为 <VirtualHost 172.16.163.12:443>
添加此项 ServerName www.b.com
添加此项 DocumentRoot "/var/www/b.com"
把SSLCertificateFile /etc/pki/tls/certs/localhost.crt 改为httpd.crt文件所在目录
SSLCertificateFile /etc/httpd/ssl/httpd.crt
把SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 改为httpd.key所在目录
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
B15, 检测语法
httpd -t
B16, 重启httpd 服务器
service httpd restart
A17, 把CA证书传给物理主机一份,并安装
cacert.pem 下载到物理主机
A18, 把物理机上cacert.pem 改为cacert.crt ,此时证书图标将改变如图
A19, 双击并安装 ,安装到受信任的证书目录中
A20, 输入https://www.b.com
到此结束 配置完成 !!!!
###############################################
配置过程中遇到的错误总结:
此次配置为了凸显出openssl的认证效果和简化其他次要的配置没有安装php, 而且使用了yum安装的方法装了httpd,这里和使用源码包安装的效果一样,完全可以实现。在配置结束验证https 的时候屡试不成功错误信息如下图:错误提示1 和 错误提示2 。 原因很简单因为我们没有装php,而默认默认主页是index.php 所以导致访问失败,
解决办法: mv index.php index.html 即可!!!