为了完成实验以及不同电脑虚拟机不同,索性买了一个腾讯云的服务器,学生价,很便宜。

实验环境:CentOS7.5,Apache 2.4.6 OpenSSL 1.0.2k

理论知识

Http和Https的区别略
Https建立流程如下图(图源郭老师知乎)


大概流程:

  • CA服务器生成自己的密钥对,并颁发给自己一个证书(根证书)
  • 在浏览器中加入此根证书,即信任由该机构颁发的证书
  • 网站服务器生成自己的密钥对,将自己的域名等验证信息、公钥生成一个csr文件,作为请求发送给CA服务器,CA服务器验证无误之后,CA的私钥对网站发送给自己的信息加密,生成该网站的证书颁发给该网站服务器
  • 网站成功获取证书
  • 客户机访问该https网站
    • 网站将自己的证书发送给客户机
    • 客户机查看证书颁发机构,从自己的证书库中查找有无该证书颁发机构的根证书
    • 使用根证书中的公钥对网站所发送证书进行验证,核实网站服务器的身份和域名等信息是否有误
    • 验证无误,与服务器进行协商通信加密方式
    • 开始通信

搭建实验环境

安装apache、PHP、MySQL(此实验用不到)、ssl模块(mod_ssl)、openssl

配置CA

查看CA配置文件 /etc/pki/tls/openssl.cnf
其中较为关键的配置

[ CA_default ]dir        = /etc/pki/CA      # Where everything is kept
certs       = $dir/certs       # Where the issued certs are kept
crl_dir     = $dir/crl     # Where the issued crl are kept
database    = $dir/index.txt   # database index file.
#unique_subject = no           # Set to 'no' to allow creation of# several ctificates with same subject.
new_certs_dir   = $dir/newcerts        # default place for new certs.certificate   = $dir/cacert.pem  # The CA certificate
serial      = $dir/serial      # The current serial number
crlnumber   = $dir/crlnumber   # the current crl number# must be commented out to leave a V1 CRL
crl     = $dir/crl.pem         # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE    = $dir/private/.rand   # private random number filex509_extensions = usr_cert     # The extentions to add to the cert# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt    = ca_default       # Subject Name options
cert_opt    = ca_default       # Certificate field options# Extension copying option: use with caution.
# copy_extensions = copy# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions    = crl_extdefault_days  = 365          # how long to certify for
default_crl_days= 30           # how long before next CRL
default_md  = sha256       # use SHA-256 by default
preserve    = no           # keep passed DN ordering# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy      = policy_match

为了简单一点,直接使用默认配置,不做改动。

生成根证书

在/etc/pki/CA中,默认初始化有四个空文件夹,如果没有,请创建。

创建数据库index.txt和序列号文件serial,并给serial一个初始值01

使用openssl生成一个密钥对,存放在private文件中(对应配置文件中要求)


生成证书请求,并自签证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
req 生成证书请求命令
-new 生成新证书请求
-x509 采用x509格式标准
-key 所使用的密钥对
-days 证书有效期
-out 证书保存路径

在该命令后,需要输入国家、省份、城市、组织名、部门名、服务器名和Email

至此,CA根证书颁发完成。

网站服务器向CA请求认证

创建目录,存放网站的密钥对和证书

使用openssl生成密钥对

生成证书请求文件csr

openssl req -new -key httpd.key -days 365 -out httpd.csr

需要输入国家、省份、城市、组织名(与根证书组织名相同)、部门名、主机名(十分关键,即域名)、Email
主机名中,如果想通过IP直接访问,即填IP地址,如果有域名,即填域名;
如果想通过修改hosts文件的方式通过域名访问,需要使用一个没有备案的域名,本例中采用www.alskjdfqorewasd.com

至此,生成了一个csr文件(Certificate Signing Request),将此证书请求发送给CA,生成证书颁发给服务器,在此采用最简单的方式
显示该证书请求中的关键信息,确认后两次键入y,将生成证书发动到-out后面的参数中

至此,网站服务器已经成功获取到由CA发送的证书。
查看CA中的数据库index.txt,已经有了数据,并在newcerts中有了一个新的证书文件

修改apache的证书和密钥对配置

查看/etc/httpd/conf.d/ssl.conf,找到SSLCertificateFile和SSLCertificateKeyFile,分别将后面的参数修改为ssl目录中的httpd.crt和httpd.key,并保存。

重启httpd服务

systemctl restart httpd.service

如果有报错,显示httpd服务无法正常重启,有可能是证书和密钥指向的位置不对,或者之前哪一步有错误,认真检查。

在客户机测试

采用本地Windows系统做测试,使用火狐浏览器
因为生成证书时使用的是映射域名,所以修改C:\Windows\System32\drivers\etc下的hosts文件,在最后加上一行

服务器IP地址 www.alskjdfqorewasd.com

使用浏览器打开https://www.alskjdfqorewasd.com,显示如下

浏览器告诉我们说这个网站是自签名的,火狐不信任这个网站,证书颁发者未知,此时只需要将CA的根证书导入到浏览器中即可

  • 将服务器上的/etc/pki/CA/cacert.pem拷贝至本地
  • 火狐浏览器右上角三道杠-选项-隐私与安全-证书-查看证书
  • 证书颁发机构-导入
  • 选择cacert.pem文件,两项全打勾,确认导入

    可点击查看,查看CA根证书中的详细信息。

重新刷新网站,成功访问。

可通过点击地址栏左侧小锁,安全连接>查看更多信息-查看证书来查看网站的证书详细信息。
HTTPS服务器搭建完成。

腾讯云CentOS自建CA证书搭建https服务器相关推荐

  1. 信息安全实践Lab1-自建CA证书搭建https服务器

    title: 信息安全实践Lab1-自建CA证书搭建https服务器 date: 2021-12-21 02:44:40 tags: 信息安全 categories: 信息安全实践 信息安全实践Lab ...

  2. 自建CA证书搭建https服务器

    由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...

  3. 信安实践——自建CA证书搭建https服务器

    https://www.cnblogs.com/libaoquan/p/7965873.html 1.理论知识 https简介 HTTPS(全称:Hyper Text Transfer Protoco ...

  4. 实战:搭建CA认证中心,使用CA证书搭建HTTPS

    CA认证中心服务端:xuegod63.cn                         IP:192.168.0.61 客户端                  :xuegod64.cn      ...

  5. 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程

    因为想自己编写微信公众号后台的程序,实现一些小功能,为以后的开发做准备,所以就从零开始,摸索着注册微信公众号,租用服务器,搭建环境进行开发. 简单的搭建过程中也经历了一些波折,踩了不少坑,仅留此文给跟 ...

  6. 利用openssl自建ca并且使apache2用自建的ca证书进行https链接(自用,,,

    参考了信安实践--自建CA证书搭建https服务器 - LiBaoquan - 博客园 (cnblogs.com) 加一些关于apache的命令: sudo systemctl start apach ...

  7. centos信任自建CA证书

    我们经常会用配置网站可以用https访问,但是购买证书不现实,所以我们会选择自建CA证书,但是自建的CA证书,在linux中用curl访问时总会报错,报错信息如下: curl: (60) Peer c ...

  8. 自建CA证书以及导入到浏览器实现https安全连接

    自建CA证书以及导入到浏览器实现https安全连接 安装 openssl(一般centos 系统都会自带安装好的了) 目录:/etc/pki/CA/ yum install openssl opens ...

  9. linux的常用操作——基于ftp的windows10和腾讯云centos操作系统之间的文件上传和下载

    \qquad在腾讯云服务器的centos操作系统上,安装vsftpd并进行配置,然后基于ftp实现windows10操作系统和腾讯云centos系统之间的文件上传和下载. 文章目录 1.基于腾讯云服务 ...

最新文章

  1. python网课百度网盘-我的“便(bian)宜”Python网课第一课
  2. UA PHYS515A 电磁理论V 电磁波与辐射7 运动点电荷的辐射
  3. 利用Bootstrap+Avalonjs+EntityFramework 开发ASP.NET WebForm应用程序(上)
  4. 应用安全与微软SDL-IT流程
  5. 使用IntelliJ IDEA11创建Java Web程序
  6. HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?
  7. MySQL运行一段时间后自动停止问题的排查
  8. 新疆特岗计算机考试题,2020新疆特岗教师笔试资料领取(小学信息技术)
  9. C++类成员属性的一种简洁实现
  10. java虚拟机工作原理_Java虚拟机工作原理详解
  11. 处理非window设置为window的Owner
  12. listary文件查找程序下载和使用
  13. XJOI 9864 金字塔
  14. 黑马 Docker 笔记
  15. 环境监测神器——智慧环境监测数据可视化平台
  16. ofs.open函数
  17. Apple Sign in with Apple(苹果授权登录PHP)
  18. 腹板拼接宽度_钢结构拼接相关规范要求
  19. HTML5和CSS3扁平化风格
  20. 小米平板4 android版本,小米平板4/4Plus通刷-LOS-安卓9.0.0-稳定版Stable2.0-来去电归属-农历等-本地化增强适配...

热门文章

  1. 【Python入门教程】第38篇 filter()函数
  2. Symbian入门指南第一章:Symbian系统简介
  3. Word——Word在试图打开文件时遇到错误的一种解决办法
  4. iOS 获取屏幕亮度和调整屏幕亮度的方法
  5. 20个不错的CSS页面布局相关资源推荐
  6. 旅行商问题(深度优先搜索 回溯法 排列树)
  7. recipe commences before first target. Stop 错误分析
  8. 同一种方法,同一句话,翻译成英语和泰语,差别为什么这么大?
  9. vi-kotlin gradle配置
  10. 内容、生态两手抓,知乎商业化再进一步