https即http协议加上ssl协议,在使用https协议登入网站时浏览器会先生成请求,让服务器把自己的数字证书发送过来,验证通过后才能协商会话密钥进而安全的访问该站点。

1.模拟CA认证的全过程

对于一个服务器,要想实现https服务,首先要向CA申请数字证书。CA用私钥将服务器发来的申请签名后生成服务器的数字证书,用户(浏览器)想要访问https服务器,就得向服务器发送认证请求,接下来服务器把自己已签名的数字证书发送给用户,用户拿到服务器的证书后用CA的公钥(已内置于浏览器)解密证书内容,若匹配成功,则说明服务器是安全可访问的,然后就是服务器和用户协商会话密钥(用公私钥加解密),最后才能访问具体的内容。

这个过程应该注意以下几点:

  • CA的公钥信息已经预装在浏览器内了,所以用户拿到服务器的证书后可以直接用相对应的CA的公钥解密
  • 服务器想要获得证书需要向CA发出申请,并填写相应的信息(CA会验证信息的真实性)
  • 用户(浏览器)和服务器的最终交互内容并不是用公私钥加解密,而是用公私钥协商生成会话密钥(对称)后,用会话密钥加解密传输内容,因为对称密钥的加解密速度要远远高于非对称密钥。

2.搭建虚拟CA

要想模拟CA认证的全过程,首先要先在自己的主机上模拟一个CA,搭建CA的步骤如下:

2.1为CA新建目录及CA的基本配置

新建一个目录用于存放CA的相关文件,这里新建/etc/ssl/CA ,接下来在CA文件夹下新建private文件夹存CA的私钥,新建certs文件夹存放为server颁发的证书的副本,新建index.txt作为证书的数据库文件,新建一个serial文件作为颁布证书的序号,先写入01。

1

 

接下来创建CA配置文件caconfig.conf 输入以下内容:

修改相应的目录至自己的目录即可

2.2生成CA根证书

-newkey rsa:bits  生成bits大小的RSA新密钥

接下来给CA的私钥设置密码,该密码会在生成服务器证书时输入。然后就生成了CA的根证书:cacert.pem 和 private目录下的CA私钥 : cakey.pem

 

2.3将CA根证书导入至浏览器

以Chromium浏览器为例 点击  修改–>偏好设置–>显示高级设置–>管理证书–>授权中心–>导入  将CA的根证书cacert.pem导入即可

3.搭建apache2服务器

3.1安装apache2服务器

其中/etc/apache2/apache2.conf 是主配置文件 , 根设置在/etc/apache2/sites-available 。在文件中可以发现默认的网站主页在 /var/www/目录下。安装好后在浏览器中输入 127.0.0.1 即可看到apache2的默认页面。

3.2生成证书请求文件和服务器私钥

服务器向CA提出数字证书申请,需要先构造证书请求文件和服务器私钥。

在/etc/ssl/下新建文件夹server用于存放服务器相关信息,新建server配置文件 server.conf如下:

需要修改commonName, DNS.0, DNS.1 为localhost。 用命令生成服务器私钥和请求文件:

设置密钥之后会生成证书请求文件 tempreq.pem 和 serverkey.pem服务器私钥

3.3生成数字证书

生成的server_crt.pem即是服务器证书 ,在CA目录下的certs文件夹里多了一个01.pem,是该服务器证书的备份。

3.4修改配置并启动

修改/etc/apache2/sites-available 中default-ssl文件的SSLCertificateFile以及SSLCertificateKeyFile,将前者改为给服务器颁发的证书文件,后者改为服务器的私钥

再执行命令启动SSL模块并重启服务器:

然后要输入服务器私钥的密码。

3.5效果展示

在浏览器中输入 https://localhost 出现:

2

配置成功!

另外,重启之后再次打开可能出现端口被占用的问题,解决方法是:

找到 占用80端口的进程pid,kill这个进程,然后再重启apache服务器即可。

 

 

观看更多有关 的文章?

*

+
跳转到评论