设为首页 收藏本站
查看: 1980|回复: 0

[经验分享] linux,SSL的实现过程

[复制链接]

尚未签到

发表于 2018-5-25 09:45:27 | 显示全部楼层 |阅读模式
SSL的实现过程

DSC0000.png
首先,客户端与服务器端进行三次握手。(因为http基于TCP/IP协议进行通信),然后他们建立SSL会话,协商要使用的加密算法,当协商完成之后。服务器端就会将自己的证书发送给客户端,客户端验证发现没有问题之后,就会生成一个对称密钥发送给服务器端,然后客户端就发送请求给服务器端,服务器端便会使用刚刚客户端发来的对称密钥加密将内容发送给客户端。这样ssl会话就建立起来了。

但是,客户端如何验证服务器的证书是否真实呢,那么便需要一个CA:第三方证书颁发机构给我们的服务器端颁发证书。所以客户端便可以到CA去验证服务器端的证书。
这时候的CA,应该自己有一份证书保存在客户端这边,并且这段证书是自签的。(用以客户端可以到CA去验证服务器端的证书。)

那么服务器端如何到CA让CA给自己搞一份证书呢:首先服务器端先生成一份密钥,将公钥交给CA,由CA对它签署并生成证书,保存一份并回送给服务器端。服务器对其进行配置使用,然后在通话过后就可以将证书发送给客户端,客户端询问CA在进行验证。


①前提:
要想使你的web服务器支持ssl功能,第一步得安装SSL模块

  •   [root@Cyz ~]# yum install mod_ssl  
  •   //查看都安装了什么  
  •   [root@Cyz ~]# rpm -ql mod_ssl  
  •   /etc/httpd/conf.d/ssl.conf //说明是配置文件,更改配置需要重启  
  •   /usr/lib/httpd/modules/mod_ssl.so   
  •   /var/cache/mod_ssl          //缓存目录  
  •   /var/cache/mod_ssl/scache.dir  
  •   /var/cache/mod_ssl/scache.pag  
  •   /var/cache/mod_ssl/scache.sem  
②提供CA
重新找台主机,用这台主机做我们的CA:这台主机的IP为111.9

DSC0001.png

要想做CA,首先得生成自签证书,:

  •   [root@localhost ~]# cd /etc/pki/CA/  
  •   //生成私钥  
  •   [root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)  
  •   //umask为了生成时权限其他用户无权限访问 –out表示路径)  
  •   Generating RSA private key, 2048 bit long modulus  
  •   .......................................+++  
  •   ........................+++  
  •   e is 65537 (0x10001)  
  •   //查看权限  
  •   [root@localhost CA]# ls -l private/  
  •   total 8  
  •   -rw------- 1 root root 1679 Apr 10 16:15 cakey.pem //600的权限  
  •   
  •   //然后去修改配置文件中的默认信息,将其改为我们通常使用的  
  •   [root@localhost CA]# vim ../tls/openssl.cnf  

DSC0002.png


  •   //为自己生成自签证书  
  •   [root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655  
  •   //然后继续编辑openssl.cnf找到  
  •   [ CA_default ]  
  •   
  •   dir             = /etc/pki/CA//改为这样子  
  •   //然后创建  
  •   [root@localhost CA]# mkdir certs crl newcerts  
  •   [root@localhost CA]# touch index.txt  
  •   [root@localhost CA]# echo 01 > serial  
  •   [root@localhost CA]# ls  
  •   cacert.pem  certs  crl  index.txt  newcerts  private  serial  
  •   
    //这个时候就已经准备好了CA就可以使用了
      

这个时候回到我们的客户端111.1


  •   [root@Cyz ~]# cd /etc/httpd/          //保存在这里  
  •   [root@Cyz httpd]# mkdir ssl  
  •   [root@Cyz httpd]# ls  
  •   conf conf.d logs modules run ssl  
  •   [root@Cyz httpd]# cd ssl/  
  •   [root@Cyz ssl]# ls  
  •   [root@Cyz ssl]# (umask 077; openssl genrsa 1024 > httpd.key)    //生成密钥  
  •   Generating RSA private key, 1024 bit long modulus  
  •   ................................++++++  
  •   .....................................................++++++  
  •   e is 65537 (0x10001)  
  •   [root@Cyz ssl]# ll  
  •   total 8  
  •   -rw------- 1 root root 887 Apr 10 16:33 httpd.key  
  •   [root@Cyz ssl]# openssl req -new -key httpd.key -out httpd.csr  //生成证书颁发请求  
  •   You are about to be asked to enter information that will be incorporated  
  •   into your certificate request.  
  •   What you are about to enter is what is called a Distinguished Name or a DN.  
  •   There are quite a few fields but you can leave some blank  
  •   For some fields there will be a default value,  
  •   If you enter '.', the field will be left blank.  
  •   -----  
  •   Country Name (2 letter code) [GB]:CN  
  •   State or Province Name (full name) [Berkshire]:Henan     
  •   Locality Name (eg, city) [Newbury]:Zhengzhou  
  •   Organization Name (eg, company) [My Company Ltd]:MageEdu     
  •   Organizational Unit Name (eg, section) []:Tech  
  •   Common Name (eg, your name or your server's hostname) []:hello.magedu.com  
  •   Email Address []:hello@magedu.com  
  •   
  •   Please enter the following 'extra' attributes  
  •   to be sent with your certificate request  
  •   A challenge password []:  
  •   An optional company name []:  
  •   [root@Cyz ssl]# ls  
  •   httpd.csr httpd.key  
  •   [root@Cyz ssl]# scp httpd.csr 172.16.111.9:/tmp //将csr(证书签署请求)复制到CA  
  •   The authenticity of host '172.16.111.9 (172.16.111.9)' can't be established.  
  •   RSA key fingerprint is 44:0a:1f:77:7f:cb:df:09:a8:8d:ac:23:47:b3:a8:99.  
  •   Are you sure you want to continue connecting (yes/no)? yes  
  •   Warning: Permanently added '172.16.111.9' (RSA) to the list of known hosts.  
  •   root@172.16.111.9's password:   
  •   httpd.csr                                                   100% 704     0.7KB/s   00:00   

然后回到CA进行签署

  •   [root@localhost CA]# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3650  
  •   Using configuration from /etc/pki/tls/openssl.cnf  
  •   Check that the request matches the signature  
  •   Signature ok  
  •   Certificate Details:  
  •           Serial Number: 1 (0x1)  
  •           Validity  
  •               Not Before: Apr 10 08:41:24 2013 GMT  
  •               Not After : Apr 8 08:41:24 2023 GMT  
  •           Subject:  
  •   countryName               = CN
  •   stateOrProvinceName       = Henan
  •   organizationName          = MageEdu
  •   organizationalUnitName    = Tech
  •   commonName                = hello.magedu.com  
  •   emailAddress              = hello@magedu.com  
  •           X509v3 extensions:  
  •               X509v3 Basic Constraints:   
  •                   CA:FALSE  
  •               Netscape Comment:   
  •                   OpenSSL Generated Certificate  
  •               X509v3 Subject Key Identifier:   
  •                   10:B1:D2:C5:48:58:66:7B:35:71:BD:62:1D:77:85:12:EB:36:DF:63  
  •               X509v3 Authority Key Identifier:   
  •                   keyid:30:86:2F:D5:DC:10:09:DA:38:19:E5:72:34:05:D5:5D:CE:83:B2:86  
  •   
  •   Certificate is to be certified until Apr 8 08:41:24 2023 GMT (3650 days)  
  •   Sign the certificate? [y/n]:y  
  •   
  •   
  •   1 out of 1 certificate requests certified, commit? [y/n]y  
  •   Write out database with 1 new entries  
  •   Data Base Updated //颁发成功  
  •   
  •   //去查看生成的证书  
  •   [root@localhost CA]# cd /etc/pki/CA/      
  •   [root@localhost CA]# ls  
  •   cacert.pem crl        index.txt.attr newcerts serial  
  •   certs       index.txt index.txt.old   private   serial.old  
  •   [root@localhost CA]# cat index.txt //查看内容  
  •   V 230408084124Z            01    unknown       /C=CN/ST=Henan/O=MageEdu/OU=Tech/CN=hello.magedu.com/emailAddress=hello@magedu.com  
  •   [root@localhost CA]# cat serial //已经自动排序  
  •   02  
  •   
  •   //然后把证书发送给请求者。这里我们到客户端去复制证书  
  •   [root@Cyz ssl]# scp 172.16.111.9:/tmp/httpd.crt ./  
  •   root@172.16.111.9's password:   
  •   httpd.crt                                                   100% 3864     3.8KB/s   00:00  
  •   
  •   这个时候要记得返回CA中将tmp下的临时文件给删除掉以免别人获取  
  •   [root@localhost CA]# cd /tmp/  
  •   [root@localhost tmp]# ls  
  •   busybox                  grub-install.log.s11228 httpd.csr whatis.Fa3163  
  •   grub-install.img.o11227 httpd.crt                initrd  
  •   [root@localhost tmp]# rm httpd.c*  
  •   rm: remove regular file `httpd.crt'? y  
  •   rm: remove regular file `httpd.csr'? y  

这个时候证书已经签署成功了,我们应该如何配置使用它呢:

  •   [root@Cyz ssl]# cd /etc/httpd/conf.d/  
  •   [root@Cyz conf.d]# ls  
  •   manual.conf php.conf proxy_ajp.conf README ssl.conf virtual.conf welcome.con1  
  •   [root@Cyz conf.d]# vim ssl.conf  
  •   
  •   //将里面的内容作如下修改:  
  •   
  •   <VirtualHost 172.16.111.1:443>
  •   
  •   #ServerName www.example.com:443  
  •   ServerName hello.magedu.com  
  •   DocumentRoot "/www/magedu.com"  
  •   
  •   SSLCertificateFile /etc/httpd/ssl/httpd.crt   //证书文件  
  •   
  •   SSLCertificateKeyFile /etc/httpd/ssl/httpd.key //密钥文件  
  •   //检查语法  
  •   [root@Cyz conf.d]# httpd -t  
  •   Syntax OK  
  •   
  •   //重启服务  
  •   [root@Cyz conf.d]# service httpd restart  

DSC0003.png


然后继续修改物理机的HOSTS文件

DSC0004.png
//添加如下
    172.16.111.1   hello.magedu.com

然后我们来访问下:(我们这里的是https://)系统提示我们这个网站安全证书有问题,原因是因为我们CA不受信任,解决方法自然是我们手动导入证书了:

DSC0005.png
我们来到CA,将CA的证书发送给物理主机一份

DSC0006.png
点击这里的绿色按钮

DSC0007.png

DSC0008.jpg
将其扩展名改为crt 会发现变了样子
DSC0009.jpg
然后双击进行安装
完成之后就可以打来IE来验证啦

DSC00010.jpg
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-480871-1-1.html 上篇帖子: Linux 命令小汇总 下篇帖子: linux iscsi
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表