首页
关于 About
网站安全性 Security
Search
1
Chrome/Chromium 在 Linux 平台的视频硬解方案
1,433 阅读
2
将 USB 设备连接到 WSL2
296 阅读
3
关闭 Intel VMD 解决 INACCESSIBLE_BOOT_DEVICE 蓝屏
219 阅读
4
为河北邯郸被害少年发声
193 阅读
5
Android 14 平台程序开发中文件共享权限问题
188 阅读
数字安全
教程
公告
默认
高通设备开发
登录
Search
标签搜索
Windows
Linux
Qualcomm
QCS8250
SM8250
高通
Chromium
Chrome
AppArmor
PKI
Android
OpenWrt
NVIDIA
CertificateTransparency
X509
Python
pip
Docker
Electron
WSL
日暮清林
累计撰写
21
篇文章
累计收到
11
条评论
首页
栏目
数字安全
教程
公告
默认
高通设备开发
页面
关于 About
网站安全性 Security
搜索到
1
篇与
的结果
2024-03-10
证书透明度日志服务器部署指南(Docker)
前言Google 于几年前提出了“证书透明度”概念,用于确保互联网签发的每一个 SSL 证书都被记录,有效防止 CA 秘密签发证书用于中间人攻击。证书透明度策略要求所有 SSL 证书在使用时,必须有有效的证书透明度时间戳信息,该信息可以作为 X509 扩展签名证书时间戳列表(SignedCertificateTimestampList)嵌入证书,也可以作为独立的数据由 Web 服务器在客户端访问网站时分发。而 SCT 信息则需要证书透明度日志接受证书后签发。本文介绍仅介绍证书透明度日志服务器的部署,对 SCT 签发流程和证书透明度另文讲解。本文使用 Google 官方提供的由 Go 语言实现的证书透明度日志进行部署。官方仓库:certificate-transparency-go本文也不对其组件进行介绍,对于使用到的文件,为尽可能保证文章消息准确,均提供官方链接(如有)。请注意,本文需要您有一定的 Docker 基础,熟悉 Docker 的存储和、网络架构教程证书透明度日志由两部分组成,核心数据服务:Trillian,证书透明度日志服务:CTFE。我们先进行 Trillian 的部署。准备 docker-compose.yml 文件Google 在其仓库中提供了模板文件,我们需要对其进行一些处理。docker-compose.yaml因为 Trillian 要求使用兼容 MySQL 的数据库系统,在本文中我们使用外部 MariaDB 数据库,所以我们移除编排文件中自带的 MySQL 数据库服务并删除子服务对其依赖。删除 services 标签中的 db 标签及其全部内容,随后删除 services 标签中其他服务的 depends_on 标签中的所有 db 条目,对于删除后没有其他条目的服务,直接删除整个 depends_on 标签。随后修改每个服务中的数据库连接信息,如用户名、密码、数据库名、地址、端口等,这些信息需要保证和后续初始化数据库时使用的内容相符。数据库连接信息在各服务的 command 标签内的 "--mysql_uri= 项的值。官方默认为 test:zaphod@tcp(db:3306)/test,格式为:用户名:密码@tcp(地址:端口)/数据库名。随后根据实际情况,配置各个服务的网络模式、使用的 Docker 网络,确保可以访问数据库地址,端口可以被外部访问。处理并保存编排文件后,我们需要初始化数据库。初始化数据库Google 在其仓库中提供了 SQL 文件,我们将其导入数据库即可。storage.sql使用命令导入(mariadb 可换成 mysql):mariadb -u root -p<PASSWORD_FOR_ROOT> -D<DATABASE_NAME> < ./storage.sql需要将<PASSWORD_FOR_ROOT>换成数据库 root 用户的密码(和-p之间无空格),DATABASE_NAME 换成数据库名字。初始化 Docker 存储卷我们需要创建一个 Docker 存储卷用于持久化存储透明度日志服务器所需要的一些文件。自行创建一个名为 ctfe_config 的卷,并设置本地挂载点便于访问。部署 Trillian进入编排文件所在目录后,使用 docker compose up 命令启动。由于编排文件中 ctfe 服务设置了 profiles: ["frontend"],因此 ctfe 服务不会启动,这将允许我们在完成证书透明度日志必须的设置后再启动。部署 CTFE进入 Docker 存储卷 ctfe_config 的挂载点。我们需要准备下面几项:证书透明度日志的加密私钥和公钥(派生自私钥)证书透明度日志的配置文件证书透明度日志的信任根清单(由日志自行决定)生成私钥和公钥使用命令:openssl ecparam -name prime256v1 > keyparam.pem openssl ecparam -in keyparam.pem -genkey -noout >> privkey.pem openssl ec -in privkey.pem -pubout -out pubkey.pem随后自行获取公私钥的 DER 格式的 GREP Hex 值(例如:\x00\x01\x02),分别替换配置文件中 private_key 标签和 public_key 标签中的 der 标签的值为私钥 GREP Hex 的值和公钥 DER 格式的 GREP Hex 值。处理配置文件Google 在其仓库中提供了模板文件,我们需要对其进行一些处理。配置文件需要下列几项提前获取的内容:log_id:Trillian 中 TREE 的 ID。prefix:自行决定的纯英文+数字的日志前缀/名字。roots_pem_file:日志接受的根证书清单。我们首先获取第一项。创建一个 Trillian 树,用于证书记录。首先使用命令安装 createtree 工具:go install github.com/google/trillian/cmd/createtree@latest随后使用命令:createtree --admin_server=:8080在输出的日志中即有纯数字的 log id。随后修改配置文件中 log_id 的值。接下来我们进行第二项。证书透明度日志的前缀/名字是区分每一个日志和 TREE 的重要部分。其只接受英文字母和数字。如:apple/hello2024等。起一个名字,并修改配置文件中 prefix 的值。最后进行第三项。使用命令:sudo apt-get install -qy ca-certificates sudo update-ca-certificates cat /etc/ssl/certs/* > ca-roots.pem随后修改配置文件中 roots_pem_file 的值为 /ctfe-config/ca-roots.pem。启动证书透明度日志上述步骤后,我们可以发现 Trillian 的两个服务早已启动,现在只剩下 CTFE 服务了。输入命令:docker compose --profile frontend up即可启动。如果出现错误则服务会持续重启。验证日志安装并使用 ctclient 验证日志,请替换 <LOG_PREFIX> 为你先前设置的值。go install github.com/google/certificate-transparency-go/client/ctclient@latest ctclient get-sth --log_uri http://localhost:8080/<LOG_PREFIX>小广告本人正在运行 TrusAuth 可信服务,使用自研系统,保证高可用性,同时确保各级 CA 密钥绝对安全。如果有需要欢迎联系。了解详情可访问官网:TrusAuth Trusted PKI Service
2024年03月10日
172 阅读
3 评论
0 点赞