腾讯云CentOS自建CA证书搭建https服务器
为了完成实验以及不同电脑虚拟机不同,索性买了一个腾讯云的服务器,学生价,很便宜。
实验环境: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服务器相关推荐
- 信息安全实践Lab1-自建CA证书搭建https服务器
title: 信息安全实践Lab1-自建CA证书搭建https服务器 date: 2021-12-21 02:44:40 tags: 信息安全 categories: 信息安全实践 信息安全实践Lab ...
- 自建CA证书搭建https服务器
由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...
- 信安实践——自建CA证书搭建https服务器
https://www.cnblogs.com/libaoquan/p/7965873.html 1.理论知识 https简介 HTTPS(全称:Hyper Text Transfer Protoco ...
- 实战:搭建CA认证中心,使用CA证书搭建HTTPS
CA认证中心服务端:xuegod63.cn IP:192.168.0.61 客户端 :xuegod64.cn ...
- 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程
因为想自己编写微信公众号后台的程序,实现一些小功能,为以后的开发做准备,所以就从零开始,摸索着注册微信公众号,租用服务器,搭建环境进行开发. 简单的搭建过程中也经历了一些波折,踩了不少坑,仅留此文给跟 ...
- 利用openssl自建ca并且使apache2用自建的ca证书进行https链接(自用,,,
参考了信安实践--自建CA证书搭建https服务器 - LiBaoquan - 博客园 (cnblogs.com) 加一些关于apache的命令: sudo systemctl start apach ...
- centos信任自建CA证书
我们经常会用配置网站可以用https访问,但是购买证书不现实,所以我们会选择自建CA证书,但是自建的CA证书,在linux中用curl访问时总会报错,报错信息如下: curl: (60) Peer c ...
- 自建CA证书以及导入到浏览器实现https安全连接
自建CA证书以及导入到浏览器实现https安全连接 安装 openssl(一般centos 系统都会自带安装好的了) 目录:/etc/pki/CA/ yum install openssl opens ...
- linux的常用操作——基于ftp的windows10和腾讯云centos操作系统之间的文件上传和下载
\qquad在腾讯云服务器的centos操作系统上,安装vsftpd并进行配置,然后基于ftp实现windows10操作系统和腾讯云centos系统之间的文件上传和下载. 文章目录 1.基于腾讯云服务 ...
最新文章
- python网课百度网盘-我的“便(bian)宜”Python网课第一课
- UA PHYS515A 电磁理论V 电磁波与辐射7 运动点电荷的辐射
- 利用Bootstrap+Avalonjs+EntityFramework 开发ASP.NET WebForm应用程序(上)
- 应用安全与微软SDL-IT流程
- 使用IntelliJ IDEA11创建Java Web程序
- HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?
- MySQL运行一段时间后自动停止问题的排查
- 新疆特岗计算机考试题,2020新疆特岗教师笔试资料领取(小学信息技术)
- C++类成员属性的一种简洁实现
- java虚拟机工作原理_Java虚拟机工作原理详解
- 处理非window设置为window的Owner
- listary文件查找程序下载和使用
- XJOI 9864 金字塔
- 黑马 Docker 笔记
- 环境监测神器——智慧环境监测数据可视化平台
- ofs.open函数
- Apple Sign in with Apple(苹果授权登录PHP)
- 腹板拼接宽度_钢结构拼接相关规范要求
- HTML5和CSS3扁平化风格
- 小米平板4 android版本,小米平板4/4Plus通刷-LOS-安卓9.0.0-稳定版Stable2.0-来去电归属-农历等-本地化增强适配...