目录nginx
1 CA架构说明windows
1.1 名词说明centos
1.2 信任关系说明浏览器
3.4 具体案例测试ide
3.4.4 使用windows01访问测试---预期效果证书不信任
3.4.6 使用windows01访问测试---预期效果证书信任
3.4.9 使用windows01访问测试---预期效果证书不信任
3.4.10 windows01添加对CA(centos18)的信任
3.4.11 使用windows01访问测试---预期效果证书信任
CA:证书颁发机构,相似与工商局,专门发放证书的机构,只有获得了CA颁发的证书应用才能正常对外提供服务
公钥:顾名思义,公共的秘钥,安全性要求不高,能够共享出来给你们使用
私钥:私有的秘钥,只能本身使用,须要防止泄露
公钥和秘钥的关系:公钥和秘钥成对出现,互相认证,即个人公钥加密的文件只能个人秘钥解开,个人秘钥加密的文件只能个人公钥解开,每一个个体(能够是用户或者主机)均可以拥有一对。
证书:采用公钥秘钥的特性生成的一种文件,由CA颁发出来的,相似于营业执照
如上图,APP能够是Web server或者其余的应用程序,PC代指浏览APP所提供服务的设备包括电脑手机等设备。PC访问APP时(ssl认证)须要验证APP绑定的证书的真实性,而证书是由CA颁发的,此时PC只要信任CA便可,信任的方式为将CA的自签名证书加入到电脑的“受信任的证书颁发机构”。能够经过windows的控制台或者IE浏览器中的设置查看电脑信任了哪些CA,以下查看方式
打开”internet选项”—“内容”---“证书”---“受信任的根证书颁发机构”能够看到微软已经帮咱们信任好了一些公共的CA。
通常找这里面列出来的CA组织申请证书都是须要费用的,因此你们常常会在访问网页时会发现安全证书的警告,这个通常是组织内部CA颁发的或者是自签名证书。自签名证书就是经过将CA与APP所在的服务器合二为一的方式实现的。
#上面的操做是windows系统,若是是RedHat系统可使用以下方式添加对CA的信任
cat [根证书文件] >> /etc/pki/tls/certs/ca-bundle.crt
因为做者前期是从事Windows运维相关的工做,先简单介绍一下CA在windows AD中的应用。
在AD环境中通常会须要架设一台CA供其余须要证书加密的服务使用,CA架设(集成AD架设的方式)完成以后域中的全部windows设备都会自动信任该CA,域中的全部设备和全部用户均可以向CA申请证书。申请证书的方式有两种,一种是登陆CA提供的网页申请,另外一种以下:
“开始”---“运行”---“输入mmc回车”---“文件”---“添加删除管理单元”---“证书”以下图
可使用用户或者主机的名义去申请,这里选择个人用户帐户
右键“我的”---“全部任务”---“申请新证书”点击下一步
在这个界面须要在CA端定义了注册策略以后,这里就会显示注册策略,选择相应的注册策略以后申请就会被提交到CA,在CA端进行证书颁发以后在证书这一列就会显示出来证书了
这里就简单的介绍了一下windows AD环境中的证书申请方法,若是CA是使用第三方工具如openssl等工具搭建的,具体的操做方法也可能会有一些差别
#建立私钥
openssl genrsa -out cakey.pem 4096
#使用上面的私钥建立证书,这个证书被称为根证书,一台电脑将这个证书导入到“受信任的根证书颁发机构”后就至关于信任的这个CA
openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
#生成私钥
openssl genrsa -out app.key 4096
#生成证书申请文件,其实是生成了一个自签名证书,只是后面须要拿给CA签名
openssl req -new -x509 -key app.key -out app.csr -days 3650
#将上一步生成的私钥拷贝到CA端,执行以下操做
openssl ca -in httpd.csr -out httpd.crt -days 3650
#证书生成完成后能够经过以下命令查看证书
Openssl x509 -in httpd.crt -noout -serial -subject
Centos18:CA
Centos19:运行了nginx,并开启ssl模块,向CA申请证书
Windows01:作实验的windows电脑,命名为windows01
使用源码安装太麻烦,直接使用epel的yum源来安装,以下yum源供参考,具体的安装步骤就很少作介绍了
#建立私钥
openssl genrsa -out httpd.key 1024
#使用上面的私钥建立证书
openssl req -new -x509 -key httpd.key -out httpd.crt -days 3650
将私钥和证书的路径填入/etc/nginx/nginx.conf中的以下字段,这些字段默认是注释掉的,须要去掉注释
访问https://centos19发现证书错误
查看证书详情能够看到是由centos19本身颁发的证书,而且不受信任
添加信任能够直接将3.4.3中生成的证书拷贝到windows01中进行安装,或者直接在网页中查看证书时安装(这种方式在有些状况下可能不适用)。下面介绍一下第二种方式
如图查看证书,安装证书---下一步
选择存储位置为“受信任的根证书颁发机构”
安装完成以后,就添加了对centos19的信任了
从新访问网页查看发现没有报错了
建立所需的目录和文件,这些文件目录的配置都在/etc/pki/tls/openssl.conf中定义
而后按照3.1中的方法建立CA的私钥和证书以下
#建立私钥
openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096
#使用上面的私钥建立证书,这个证书被称为根证书,一台电脑将这个证书导入到“受信任的根证书颁发机构”后就至关于信任的这个CA
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
#在centos19上生成私钥
openssl genrsa -out httpd.key 4096
#在centos19上生成证书申请文件
openssl req -new -key httpd.key -out httpd.csr -days 3650
#编辑nginx配置文件/etc/nginx/nginx.conf,将新申请的私钥和证书绑定到nginx
使配置生效
Nginx -s reload
访问https://centos19发现证书不信任
查看证书发现证书是由centos18颁发给centos19的,证实是CA颁发的证书
将3.4.7中CA生成的自签名证书文件cakey.pem拷贝到windows01上,可是须要将后缀名修改成crt,将这个证书文件导入到“受信任的根证书颁发机构”
打开这个文件并导入,以下图能够看出该根证书文件的确是由CA(centos18)颁发给本身的。
作完该操做以后就信任了CA了,之后CA颁发的全部证书都不用再单独作信任关系了。
完成上一步操做以后,再次访问页面已经没有证书警告了