本文介绍的是使用自己生成的ca证书去部署https网站,本实验只限于在局域网、或者做实验用,如果要对外访问的话还是要去ca证书提供商购买,当然买的很贵,网上也有一些机构做免费的ca证书,有兴趣的小伙伴可以自己查找。本文重点是ca证书的一些操作,所以web应用就直接yum装的nginx,希望能给大家带来帮助,
概念介绍
什么是CA:
CA, Certificate Authority 即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
打个比方来说,a和b在进行交易,a不太信任b,害怕b交易后劫票,同样b也不太信任a,害怕a交易后反水。他们彼此都不信任,交易也就很难进行。这个时候来个c,c说“我来给你们做担保,但是你们俩要信任我.....”,最后三方达成一致完成了交易。
什么是HTTPS:
是以安全为目标的HTTP通道,简单讲是HTTP的安全版,https协议需要到ca申请证书,一般免费证书很少,需要交费。
生成CA证书
- 如果只有一台主机的话先执行服务端命令后执行客户端命令
服务端:
1. 生成私钥
cd /etc/pki/CA
(umask 077, openssl genrsa -out private/cakey.pem 1024)
- genrsa 生成rsa参数
- -out 生成文件保存路径
- 1024 生成key的长度
2. 自签名证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
#输入命令以后会依次让你输入ca的一些信息,如下
Country Name 国家代码:cn
State or Province Name 所在省份:beijign
Locality Name 所在城市:beijing
Organization Name 组织或公司名称:hengheihahei
Organizational Unit Name 所在部门名称:yunwei
Common Name 用户或主机名:lemon
Email Address 邮箱地址:xxxx@163.com
#以上内容根据自己情况输入
- -new 新创建个
- -x509 使用x509结构
- -key key所放路径
- -out 生成文件输出路径
- -days 证书有效时间
客户端:
1. 生成私钥
(umask 077; openssl genrsa -out nginx.key -des 1024)
- -des 指明用什么加密算法把我们的私有密钥加密(此项可以不写)
2. 生成证书申请文件
openssl req -new -key nginx.key -out app.csr
- 注意:配置信息要与之前的前三项保持一致,Common Name 必须要写
3. 将申请文件发送给服务端
scp app.csr 192.168.30.99:/etc/pki/CA
- 注意,如果只有一台主机,此步骤可以不执行
颁发证书:
#在服务端执行
touch ./index.txt #不创建会提示错误,生成证书索引数据库文件
echo 00 > ./serial #00可以自己指定,指定第一个颁发证书的序列号
openssl ca -in app.csr -out certs/app.crt -days 100
#提示全输y
然后把证书发送到客户端就行
证书查看命令:
openssl x509 -in cacert.pem -noout -text #查看证书详细内容
openssl x509 -in cacert.pem -noout -issure #查看证书有效时长
NGINX配置
#在nginx的server配置段,添加如下配置
server {
server_name www.luckynm.cn;
listen 443;
ssl on;
ssl_certificate /etc/pki/CA/certs/app.crt;
ssl_certificate_key /etc/pki/CA/nginx.key;
}
配置生效:
nginx -s reload
访问效果:(我是在一台机器上做的实验)
如有不清楚的地方欢迎留言