CA证书
hash(哈希,单向散列算法)
校验数据完整性、不可逆、不管信息多长多短hash值的长度固定不变
md5:信息摘要算法
sha1:安全哈希算法
md5sum和sha1sum
CA认证中心(ssl/tls)
httpd+ssl=https
CA:私钥,数字证书(CA私钥、签名、CA的证书请求)
http:私钥、数字证书(CA私钥、签名、http的证书请求)
client:CA数字证书验证http数字证书
证书安装
yum install openssl
配置文件:/etc/pki/tls/openssl.cnf
178行:basicConstraints=CA:FALSE改为:
basicConstraints=CA:TRUE 自签署的证书可以使用
进入/etc/pki/CA执行:
/etc/pki/tls/misc/CA -newca 生成一个新的CA机构
会生成CA的私钥
需要填写身份信息
A challenge password :
Enter pass phrase for ../../CA/private/./cakey.pem: 使用私钥自签名
在/etc/pki/CA/private目录下会生成CA私钥:cakey.pem
在/etc/pki/CA目录下会生成:
cacert.pem CA证书
careq.pem 证书请求
配置httpd:
yum install mod_ssl 安装ssl模块支持https
ls /etc/httpd/modules/mod_ssl.so 安装完成后模块位置
openssl genrsa -des -out /tmp/server.key 生成私钥并用des保护私钥
openssl req -new -key /tmp/server.key -out /tmp/server.csr 利用私钥生成证书请求,在生成证书请求时所输入的信息必须和上面CA机构中的信息一致
将证书请求发给CA机构:
scp /tmp/server.csr 192.168.2.102:/tmp/
在CA机构上使用CA的私钥和证书进行数字签名:
openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /tmp/server.crt
将生成http的数字证书发给http服务器:
scp /tmp/server.crt 192.168.2.104:/tmp/
编辑http上的ssl配置文件/etc/httpd/conf.d/ssl.conf
112行:SSLCertificateFile /tmp/server.crt 指定http数字证书的位置
119行:SSLCertificateKeyFile /tmp/server.key 指定http私钥的位置
重启apache服务,在重启的时候需要输入http私钥的密码
客户端测试:
将CA的证书发给客户端进行验证
scp /etc/pki/CA/cacert.pem 192.168.2.200:/tmp/
将cacert.pem导入浏览器
配置nginx:
yum install openssl-devel -y
编译时需要安装 --with-http_ssl_module 模块
cd /usr/local/nginx/conf/
openssl genrsa -des3 -out nginx.key 1024 //此时会让你设置一个密码
openssl req -new -key nginx.key -out nginx.csr
将nginx.csr拷贝到ca服务器
在ca服务器上使用CA的私钥和证书进行数字签名:
openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in nginx.csr -out nginx.crt
将生成的数字证书发给nginx服务器:
scp nginx.crt "nginx服务器"
修改nginx服务器上的配置:
server{
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/nginx.crt;
ssl_certificate_key /usr/local/nginx/conf/nginx.key;
}
将80端口重定向到443
server{
listen 80;
server_name "name";
rewrite ^(.*) https://$server_name$1 permanent;
}
重启nginx服务并输入上面设置的密码
haproxy配置:
yum install openssl-devel -y
安装haproxy,增加SSL模块,进入解压目录:
make TARGET=linux26 CPU=x86_64 PREFIX=/usr/local/haprpxy USE_OPENSSL=1 ADDLIB=-lz
检查ssl库是否正常:
ldd haproxy | grep ssl
make install PREFIX=/usr/local/haprpxy
制作key文件:
openssl genrsa -des3 -out /tmp/haproxy.key 1024 //此时会让你设置一个密码
openssl req -new -key /tmp/haproxy.key -out /tmp/haproxy.csr
将haproxy.csr拷贝到ca服务器
在ca服务器上使用CA的私钥和证书进行数字签名:
openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/haproxy.csr -out /tmp/haproxy.crt //需要输入证书服务器CA私钥(cakey.pem)的密码
将生成的数字证书发给haproxy服务器:
scp /tmp/haproxy.crt "haproxy服务器"
生成.pem文件:
cat /tmp/haproxy.crt /tmp/haproxy.key | tee /tmp/haproxy.pem
修改haproxy配置文件:
添加:
bind :443 ssl crt /tmp/haproxy.pem //pem文件的路径
redirect scheme https if !{ ssl_fc } //当访问80端口时自动跳转到443端口
重启haproxy服务,需要输入创建haproxy.key时设置的密码