首页
关于 About
网站安全性 Security
Search
1
Chrome/Chromium 在 Linux 平台的视频硬解方案
1,000 阅读
2
将 USB 设备连接到 WSL2
224 阅读
3
为河北邯郸被害少年发声
177 阅读
4
证书透明度日志服务器部署指南(Docker)
145 阅读
5
Android 14 平台程序开发中文件共享权限问题
126 阅读
数字安全
教程
公告
默认
登录
Search
标签搜索
Windows
Linux
Chromium
Chrome
AppArmor
PKI
Android
OpenWrt
NVIDIA
CertificateTransparency
X509
Python
pip
Docker
Electron
WSL
golang
depot_tools
gclient
tmux
日暮清林 Levi Marvin
累计撰写
15
篇文章
累计收到
10
条评论
首页
栏目
数字安全
教程
公告
默认
页面
关于 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日
145 阅读
3 评论
0 点赞