自建CA实现HTTPS教程

栏目: 服务器 · 发布时间: 7年前

内容简介:自建CA实现HTTPS教程
  • 对称密码体制和非对称密码体制
  • Apache的安装配置及使用
  • OpenSSL的使用
  • HTTPS的认证机制

其中,HTTPS的认证机制分为两种:

  • 双向验证:服务器和客户端都需要相互验证(常见于银行类网站)
  • 单向验证:只需验证服务器端

本实验教程我们做的是单向验证。

实验环境

本教程采用阿里云服务器,操作系统为:CentOS release 6.8(与Ubuntu系统稍有区别)

理清三个关系和两个概念

  • 客户端、服务器和CA机构的关系
    在该实验中,我们需要在同一台电脑上同时扮演三个角色,即: 客户端服务器CA机构 。也就是说在现实生活中,这三者都是分开的,但是在本实验中,我们要用一台计算机同时扮演这三个角色, 客户端由我们的浏览器扮演,服务器由我们的Apache扮演,CA机构由我们的根证书扮演
  • 根证书和其他证书的概念
    在网络关系中,是存在一个信任链条的,但必须有一个源头,因此在HTTPS的证书信任链条中,是有根证书、一级证书、二级证书以及后面的多级证书的。这些证书中,我们必须要假定根证书是绝对安全且值得信任的,才有后面信任链条的存在。因此在本实验中 根证书是自签名证书(自己认证自己),而服务器证书需要由根证书来签名

实验过程

第一步:安装Apache

  1. 下载安装Apache

    yum install httpd
    
  2. 修改Apache的配置文件

    配置文件位置在: /etc/httpd/conf/httpd.conf

    主要改以下两个地方:

    Listen 120.76.142.16:80
    ServerName 120.76.142.16:80
    
  3. 开启Apache

    httpd -k start
    
  4. 查看Apache是否配置成功

    浏览器访问: http://120.76.142.16/ ,如果出现页面,则说明Apache配置成功

第二步:安装OpenSSL

一般 Linux 或者CentOS都会自带OpenSSL,没有的话则自行安装。

第三步:生成CA根证书

  1. 生成一个RSA密钥,为2048位长度(1024位已经被证明容易被破解),并将该密钥用DES对称加密,并输入加密密钥:qimingyuCA。
    openssl genrsa -des3 -out root-ca.key 2048
    

这里输入的加密密钥是对RSA私钥的加密密钥

  1. 生成根证书签发请求文件,采用第一步生成的私钥进行签名
    openssl req -new -key root-ca.key -out root-ca.req
    

这里生成证书签发请求文件需要填一些信息。

参数 -new 表示新证书签发请求

  1. 自签发根证书

    openssl x509 -req -days 365 -signkey root-ca.key -in root-ca.req -out root-ca.cer
    
  2. 查看刚刚生成的根证书

    openssl x509 -noout -text -in root-ca.cer
    

第四步:生成服务器端证书

  1. 生成服务器私钥,并将该密钥用DES对称加密,并输入加密密钥:qimingyuSERVER。

    openssl genrsa -des3 -out server.key 2048
    
  2. 生成服务器证书请求签发文件

    openssl req -new -key server.key -out server.req
    

填信息的时候注意这一栏要是你HTTPS网址的域名(红色部分为所填的内容)

Common Name (eg, your name or your server’s hostname) []: qimingyu.com

  1. 使用根证书签发服务端证书
    openssl ca -config /usr/local/openssl/ssl/openssl.cnf  -in server.req -out server.cer
    
  1. 注意这里要根据OpenSSL的配置文件的信息,新建目录及拷贝重命名过去,并且在serial里面填入相应的数值。如果签名不成功,报错匹配问题的,需要修改OpenSSL的配置文件。
  2. 注意这里服务器端证书的生成与前面根证书的生成不一样,这里服务器端的证书生成是用根证书进行签名的,而根证书的生成是自己给自己签名的。
  1. 验证生成的证书是否正确
    openssl verify -CAfile root-ca.cer server.cer
    

第一个为根证书,第二个为需要验证的子证书。如果返回结果是OK,则证明证书生成正确。

第五步:安装Apache支持SSL模块

  1. 安装模块 mod_ssl

    yum install mod_ssl -y
    
  2. 修改其配置文件

    位置为: /etc/httpd/conf.d/ssl.conf

    主要更改以下内容:

    Listen 120.76.142.16:443
    

此时用HTTPS访问该网址,会出现不安全的报警

  1. 继续修改配置文件

    主要修改服务器证书及密钥的位置,指定对位置

    SSLCertificateFile /etc/pki/tls/certs/server.crt
    SSLCertificateKeyFile /etc/pki/tls/private/server.key
    
  2. 重启Apache服务器

    httpd -k stop
    httpd -k start
    

此时会要求输入服务器的密码:qimingyuSERVER

  1. 验证是否成功
    openssl s_client -connect 120.76.142.16:443 -CAfile /root/root-ca.cer
    

如果返回结果是OK,则证明实验成功

  1. 将根证书导入浏览器之后再进行访问,不再报警

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

老二非死不可

老二非死不可

方三文 / 机械工业出版社 / 2013-12 / 39.00

关于投资 价值投资者为啥都买茅台? 怎样识别好公司与坏公司? 做空者真的罪大恶极吗? 国际板对A股会有什么影响? 波段操作,止损割肉到底靠不靠谱? IPO真的是A股萎靡不振的罪魁祸首吗? 关于商业 搜狐的再造战略有戏吗? 新浪如何焕发第二春? 百度的敌人为什么是它自己? 我为什么比巴菲特早两年投资比亚迪? 民族品牌这张牌还靠谱......一起来看看 《老二非死不可》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具