IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> CA Server证书申请与颁发 & Apache2 HTTPS -> 正文阅读

[网络协议]CA Server证书申请与颁发 & Apache2 HTTPS

??本文将介绍关于CA Server的相关内容。CA Server搭建与自签名证书创建,实体认证与证书颁发,服务器证书申请与导入。

??另外,证书申请后,想要进行应用,还需要配置服务器的HTTPS。

CA Server initialize

本文使用easy-rsa工具(GitHub repo)进行CA Server的配置与维护,easy-rsa 是基于shell的CA管理工具,可以方便进行CA的管理和基本操作。

  • 下载repo release后,将其移动到适合位置,这里选择/opt/easy-rsa。并选取合适目录权限

  • 进入目录,初始化pki

cd easy-rsa
./easyrsa init-pki

配置 vars

vars是基本CA服务器配置文件,新版配置文件被放入pki目录中,需要另行修改

set_var EASYRSA_REQ_COUNTRY		"CN"
set_var EASYRSA_REQ_PROVINCE	"Shang Hai"
set_var EASYRSA_REQ_CITY		"Shang Hai"
set_var EASYRSA_REQ_ORG			"Zheng's Studio"
set_var EASYRSA_REQ_EMAIL		"hz1624917200@outlook.com"
set_var EASYRSA_REQ_OU			"My Organizational Unit"

生成CA根证书

./easyrsa build-ca

build CA

生成CA根证书ca.crt此证书是CA的凭证,所有该CA签署的证书都需要该根证书证明

ca.crt取出,分发给服务器和客户端。服务器需要CA证书作为信任链,客户端需要信任CA根证书

Linux 安装证书

crt证书移动到/usr/local/share/ca-certificates下,更新证书

sudo update-ca-certificates

更新后的证书可以在/etc/ssl/certs中查到(仅软链接)

Windows 安装证书

双击证书,点击install,安装在Trusted Root Certification Authorities.这一步非常关键,Windows将给予该CA机构根信任,该机构签发的所有证书都将被系统信任

install

证书申请与颁发

服务器密钥对生成

在申请证书前,需要先生成证书的目标公钥,使用openssl工具生成密钥对。

openssl genrsa -out <key_name>.key

密钥请妥善保存,若遗失则证书将不再有保护作用,需要申请撤销
gen server CA

申请证书

Attention: 在申请证书前,需要添加DNS请求字段,否则将出现证书域名不匹配,会被浏览器拦截

我们将在下文中看到如果不添加字段的后果,如果想避免重新申请和颁发证书,请照做

openssl.conf文件中,(位置不完全相同,笔者的文件在/etc/ssl中),增加如下信息:

...
[ req ]
...
req_extentions		= v3_req

[ v3_req ]
...
subjectAltName = @alt_names

[ alt_names ]
DNS.1	= domain1
DNS.2	= domain2
  • DNS.x字段后添加认证的域名,可以添加多个

然后执行如下指令,创建申请

sudo openssl req -new -key <key_name>.key -out <request_name>.req
  • openssl会询问关于证书的详细信息,这些信息将被写入证书中

CA request

  • 生成完毕后,查看证书请求信息
    sudo openssl req -text -noout -in <req_name>.req
    

x509 extension

将请求文件传输给CA Server,准备颁发

证书签署

使用easy-rsa维护证书实体和申请等信息

./easyrsa import-req <req_name> <entity_name>
  • req_name: 请求文件名
  • entity_name: 将录入数据库的实体名称

req imported

使用sign-req命令签署证书

./easyrsa sign-req server <entity_name>

生成文件位于./pki/issued/<entity_name>.crt

在Windows上查看证书:

kali cert

  • 此证书不需要安装,因为已经安装有根证书,此证书已经被信任

在Linux上查看证书:

sudo openssl x509 -in <cert_name> -noout -text

signed crt

  • 可以在Linux上安装证书,以后Apache调用证书直接使用安装位置

Apache2 配置 HTTPS

启用 module

启用ssl module

sudo a2enmod ssl

查看模块信息

sudo a2query -m

配置站点

/etc/apache2/sites-available下,新建站点(也可以直接修改默认站点)

原先自带两个站点配置文件,000-default.conf, default-ssl.conf

将两个配置文件合并为新的配置文件,继续修改(需要同时配置80和443的端口,可以使用echo合并,自行操作)

<VirtualHost *:443>
	ServerAdmin ...
	ServerName ...
	DocumentRoot ...
	...
	SSLCertificateFile /path/to/server/certificate
	SSLCertificateKeyFile /path/to/server/certificate/key
	
	SSLCertificateChainFile /path/to/server/certificate/chain
	...
</VirtualHost>

配置HTTP协议的重定向,在Virtual Host 80中,添加重定向配置

Redirect permanent / https://<https_server_name>
  • SSLCertificateFile: 服务器证书文件目录
  • SSLCertificateKeyFile: 证书对应私钥
  • SSLCertificateChainFile证书链文件,包含从根证书(需要客户端信任)到服务器证书的证书链(本样例中只有单层,故使用CA证书路径,也可以配置在SSLCACertificateFile中)

启用站点

sudo a2dissite 000-default.conf
sudo a2ensite site_name.conf
sudo service apache2 restart

测试

成功完成HTTPS配置!

success

success

通过Burpsuite可以观察到正确的重定向操作

redirect

通过浏览器,可以看到证书的详情页面

cert1

cert CA

问题说明

unissued cert error

unissued cert

浏览器报错,Peer's Certificate issuer is not recognized,此类在Firefox上会出现

因为Firefox自行管理证书系统,需要将CA根证书导入Firefox中解决

bad cert domain

bad cert domain

为了增强证书安全性,RFC规定将证书的Alt Name作为DNS域, 只有证书与域名相匹配,才能认为证书合法。这也是申请证书中需要配置openssl.conf的原因。如果遇到这个问题,需要重新进行证书申请,并附带DAN信息。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 13:08:02  更:2022-10-17 13:10:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:20:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码