基于OpenSSL在Linux搭建私有CA:从原理到生产实践
1. 项目概述为什么我们需要一个私有CA在数字化协作和内部系统互联的时代安全通信是基石。无论是开发团队内部的服务调用、运维管理的自动化脚本还是公司内部的管理系统、测试环境都需要一个可靠的身份验证和加密传输机制。直接使用公共CA签发的证书对于内部服务而言不仅成本高昂、流程繁琐更重要的是很多内部域名如*.internal.company.com,dev-app-01根本无法通过公共CA的验证。这就是私有CACertificate Authority证书颁发机构的价值所在。它就像公司内部的“公安局”可以为所有内部“居民”服务器、服务、设备、用户签发被内部网络信任的“身份证”数字证书。在Linux环境下搭建这样一套体系不仅能彻底解决内部通信的HTTPS、TLS加密问题还能实现细粒度的访问控制、自动化证书签发是构建安全、可信内部网络环境的核心基础设施。我经历过从手动为每个服务生成自签名证书浏览器满屏的红色警告到使用Let‘s Encrypt但受限于内网域名再到最终下定决心搭建私有CA的完整过程。实测下来一套配置得当的私有CA能让后续的服务部署、CI/CD流水线集成、微服务间通信变得无比顺畅和安全。本文将基于OpenSSL带你从零开始在Linux上搭建一个生产可用的私有CA服务器并分享一路踩坑总结出的安全最佳实践。2. 核心组件与架构设计在动手之前我们需要理解私有CA的几个核心组件和它们之间的关系。一个完整的私有CA体系通常包含以下部分2.1 根CA (Root CA)这是整个信任链的起点是最高权威。它的证书是自签名的意味着它自己证明自己。根CA的私钥是最高机密必须被离线、严密地保管。它的主要职责是签发中间CA的证书。在实际操作中根CA的服务器甚至可以是一台不连接任何网络的物理机只在需要签发或更新中间CA证书时才临时上线。2.2 中间CA (Intermediate CA)由根CA签发证书。它是实际用于为最终实体服务器、客户端签发证书的CA。使用中间CA而非直接用根CA签发的目的是建立安全边界。即使中间CA的私钥不慎泄露因为它的服务器需要在线处理签发请求我们也只需吊销该中间CA的证书而无需动摇整个根CA的信任基础。一个CA体系内可以有多个中间CA用于不同的部门或用途如Web Server CA,Client Auth CA,Code Signing CA。2.3 最终实体证书 (End-Entity Certificate)这就是我们最终安装在Web服务器Nginx/Apache、API网关、数据库客户端等上面的证书。它由中间CA或根CA但不推荐签发包含了实体的身份信息如域名和公钥。信任链的传递客户端如浏览器在访问一个持有最终实体证书的服务器时会收到该证书以及签发它的中间CA证书。客户端需要预先信任根CA证书将其导入到系统的信任存储区然后通过证书链验证最终实体证书由中间CA签名 - 中间CA证书由根CA签名 - 根CA证书是受信任的。这样就建立了一条完整的信任路径。我们的配置流程将遵循这个“根CA离线 - 中间CA在线”的最佳实践架构。3. 环境准备与OpenSSL配置我们选择OpenSSL作为工具因为它功能强大、标准且预装在绝大多数Linux发行版中。首先我们需要一个清晰的工作目录结构。# 创建CA工作目录 sudo mkdir -p /etc/pki/CA cd /etc/pki/CA # 创建子目录用于区分根CA和中间CA的材料 sudo mkdir -p root/{private,certs,crl,newcerts} sudo mkdir -p intermediate/{private,certs,crl,newcerts,csr} # 创建关键文件 sudo touch root/index.txt sudo echo 1000 | sudo tee root/serial sudo touch intermediate/index.txt sudo echo 1000 | sudo tee intermediate/serial sudo touch intermediate/crlnumber # 设置严格的权限至关重要 sudo chmod 700 root/private intermediate/private接下来配置OpenSSL的配置文件。虽然系统有默认配置但为我们的CA定制一个更清晰。创建/etc/pki/CA/openssl.cnf# OpenSSL根CA配置文件示例 [ ca ] default_ca CA_default [ CA_default ] # 目录和文件位置 dir /etc/pki/CA certs $dir/certs crl_dir $dir/crl new_certs_dir $dir/newcerts database $dir/index.txt serial $dir/serial RANDFILE $dir/private/.rand # 根CA的私钥和证书 private_key $dir/private/root.key.pem certificate $dir/certs/root.cert.pem # 证书吊销列表 crl $dir/crl/root.crl.pem crlnumber $dir/crlnumber crl_extensions crl_ext # 默认设置 default_crl_days 30 default_md sha256 preserve no policy policy_strict [ policy_strict ] # 对于根CA要求完全匹配所有字段 countryName match stateOrProvinceName match organizationName match organizationalUnitName optional commonName supplied emailAddress optional [ req ] default_bits 4096 distinguished_name req_distinguished_name string_mask utf8only default_md sha256 x509_extensions v3_ca [ req_distinguished_name ] countryName Country Name (2 letter code) countryName_default CN stateOrProvinceName State or Province Name stateOrProvinceName_default Beijing localityName Locality Name localityName_default Beijing 0.organizationName Organization Name 0.organizationName_default My Company Ltd. organizationalUnitName Organizational Unit Name organizationalUnitName_default IT Department commonName Common Name commonName_max 64 emailAddress Email Address emailAddress_max 64 [ v3_ca ] # 扩展用于CA证书 subjectKeyIdentifier hash authorityKeyIdentifier keyid:always,issuer basicConstraints critical, CA:true keyUsage critical, digitalSignature, cRLSign, keyCertSign [ v3_intermediate_ca ] # 扩展用于中间CA证书 subjectKeyIdentifier hash authorityKeyIdentifier keyid:always,issuer basicConstraints critical, CA:true, pathlen:0 keyUsage critical, digitalSignature, cRLSign, keyCertSign [ server_cert ] # 扩展用于服务器证书 basicConstraints CA:FALSE nsCertType server nsComment “OpenSSL Generated Server Certificate” subjectKeyIdentifier hash authorityKeyIdentifier keyid,issuer:always keyUsage critical, digitalSignature, keyEncipherment extendedKeyUsage serverAuth [ client_cert ] # 扩展用于客户端证书 basicConstraints CA:FALSE nsCertType client nsComment “OpenSSL Generated Client Certificate” subjectKeyIdentifier hash authorityKeyIdentifier keyid,issuer:always keyUsage critical, digitalSignature extendedKeyUsage clientAuth注意这个配置文件是核心中的核心。policy_strict部分定义了签发证书时对主题字段的匹配规则。对于根CA我们通常要求国家、省、组织名必须完全匹配请求中的值这保证了证书的一致性。pathlen:0在v3_intermediate_ca中表示该中间CA不能再签发下级CA证书这符合我们的安全设计。4. 生成根CA证书根CA的生成是一次性的且必须在安全、离线的环境中进行。我们假设初始环境是安全的。# 切换到根CA目录 cd /etc/pki/CA/root # 1. 生成根CA的私钥4096位RSAAES-256加密 sudo openssl genrsa -aes256 -out private/root.key.pem 4096 # 系统会提示你输入并确认一个强密码。请务必记住并安全保存此密码 # 2. 使用私钥生成自签名的根CA证书有效期设为20年7300天 sudo openssl req -config ../openssl.cnf \ -key private/root.key.pem \ -new -x509 -days 7300 -sha256 -extensions v3_ca \ -out certs/root.cert.pem # 执行此命令会提示你输入上一步设置的私钥密码然后填写证书主题信息。 # 对于根CACommon NameCN可以设为类似 “My Company Root CA” 的名称。 # 3. 验证生成的根证书 sudo openssl x509 -noout -text -in certs/root.cert.pem在验证输出中你需要重点关注以下几点Issuer和Subject应该是相同的因为这是自签名证书。CA:TRUE必须出现在Basic Constraints扩展中。Key Usage必须包含keyCertSign和cRLSign。有效期是否正确。实操心得根CA私钥的密码建议使用密码管理器生成并保存长度至少20位包含大小写字母、数字和符号。生成证书后立即将private/root.key.pem和其密码备份到加密的USB驱动器或硬件安全模块HSM中然后从在线服务器上彻底删除私钥文件。这台“根CA服务器”的使命就此完成可以关机封存了。5. 生成中间CA证书中间CA将运行在线上服务器处理日常的证书签发和吊销请求。# 切换到中间CA目录 cd /etc/pki/CA/intermediate # 1. 生成中间CA的私钥同样建议加密存储 sudo openssl genrsa -aes256 -out private/intermediate.key.pem 4096 # 同样设置并牢记一个强密码。 # 2. 生成证书签名请求CSR sudo openssl req -config ../openssl.cnf -new -sha256 \ -key private/intermediate.key.pem \ -out csr/intermediate.csr.pem # 这里填写的主题信息应与根CA不同。CN可以设为 “My Company Intermediate CA”。 # 3. 【关键步骤】使用根CA为中间CA的CSR签名 # 我们需要回到根CA的环境或使用离线拷贝的根CA私钥和证书 # 假设我们把根CA的材料临时拷贝到了一个安全位置 /tmp/root_ca_secure cd /tmp/root_ca_secure # 使用根CA私钥为中间CA CSR签名并应用v3_intermediate_ca扩展 sudo openssl ca -config /etc/pki/CA/openssl.cnf \ -extensions v3_intermediate_ca \ -days 3650 -notext -md sha256 \ -in /etc/pki/CA/intermediate/csr/intermediate.csr.pem \ -out /etc/pki/CA/intermediate/certs/intermediate.cert.pem # 系统会要求输入根CA私钥的密码并让你确认签发。 # 4. 验证中间CA证书 sudo openssl x509 -noout -text \ -in /etc/pki/CA/intermediate/certs/intermediate.cert.pem # 检查 Issuer 是根CASubject 是中间CA且 pathlen:0 存在。 # 5. 创建证书链文件 # 客户端需要同时信任根CA和中间CA。我们将它们合并成一个链文件。 cat /etc/pki/CA/intermediate/certs/intermediate.cert.pem \ /etc/pki/CA/root/certs/root.cert.pem \ /etc/pki/CA/intermediate/certs/ca-chain.cert.pem现在ca-chain.cert.pem文件包含了从中间CA到根CA的完整信任链。在配置Web服务器如Nginx时ssl_certificate指向服务器自己的证书ssl_trusted_certificate或ssl_certificate_key之后的链配置可以指向这个ca-chain.cert.pem文件。6. 签发服务器与客户端证书中间CA准备就绪后就可以为内部服务签发证书了。我们以签发一个用于internal-api.mycompany.com的服务器证书为例。6.1 生成服务器证书# 为具体服务创建一个目录 sudo mkdir -p /etc/pki/CA/intermediate/servers/internal-api cd /etc/pki/CA/intermediate/servers/internal-api # 1. 生成服务器私钥通常不加密以便服务能自动加载 sudo openssl genrsa -out internal-api.key.pem 2048 # 对于生产环境2048位RSA目前仍足够安全也可选择生成ECDSA密钥。 # 2. 生成CSR。注意CN字段必须填写完全限定域名FQDN。 sudo openssl req -config /etc/pki/CA/openssl.cnf \ -key internal-api.key.pem \ -new -sha256 -out internal-api.csr.pem # 在提示中Common Name 必须填写 internal-api.mycompany.com。 # 其他信息如组织单位可以根据需要填写。 # 3. 使用中间CA签发证书 cd /etc/pki/CA/intermediate sudo openssl ca -config /etc/pki/CA/openssl.cnf \ -extensions server_cert \ -days 375 -notext -md sha256 \ -in servers/internal-api/internal-api.csr.pem \ -out servers/internal-api/internal-api.cert.pem # 输入中间CA私钥的密码确认签发。 # 4. 验证证书 sudo openssl x509 -noout -text -in servers/internal-api/internal-api.cert.pem sudo openssl verify -CAfile certs/ca-chain.cert.pem servers/internal-api/internal-api.cert.pem # 第二条命令应输出 “OK”。6.2 生成客户端证书用于双向TLS认证对于数据库访问、微服务间严格认证等场景可能需要客户端证书。sudo mkdir -p /etc/pki/CA/intermediate/clients/alice cd /etc/pki/CA/intermediate/clients/alice # 生成客户端私钥和CSR sudo openssl genrsa -out alice.key.pem 2048 sudo openssl req -config /etc/pki/CA/openssl.cnf \ -key alice.key.pem -new -sha256 -out alice.csr.pem # CN可以设为用户名如 “alice”。 # 使用client_cert扩展签发 cd /etc/pki/CA/intermediate sudo openssl ca -config /etc/pki/CA/openssl.cnf \ -extensions client_cert \ -days 365 -notext -md sha256 \ -in clients/alice/alice.csr.pem \ -out clients/alice/alice.cert.pem # 通常客户端需要PKCS#12格式的证书包包含私钥和证书 sudo openssl pkcs12 -export \ -in clients/alice/alice.cert.pem \ -inkey clients/alice/alice.key.pem \ -out clients/alice/alice.p12 # 会提示设置一个导出密码用于保护.p12文件。7. 证书吊销列表CRL与在线证书状态协议OCSP证书可能会因为私钥泄露、员工离职等原因需要提前吊销。CRL是一个被吊销证书的列表文件。# 在中间CA目录下生成或更新CRL cd /etc/pki/CA/intermediate sudo openssl ca -config /etc/pki/CA/openssl.cnf \ -gencrl -out crl/intermediate.crl.pem # 查看CRL内容 sudo openssl crl -in crl/intermediate.crl.pem -noout -text然而CRL需要客户端定期下载检查不够实时。OCSP在线证书状态协议是更好的选择它允许客户端实时查询某张证书是否有效。搭建一个OCSP响应服务器需要更多配置通常使用OpenSSL的ocsp命令工具或集成到如nginx等Web服务器中提供一个查询接口。这是一个更高级的主题核心是使用CA的证书和私钥来对查询请求进行签名响应。8. 自动化与集成实践手动签发证书无法规模化。在实际生产中我们需要自动化。有两种主流思路脚本自动化编写Shell或Python脚本将上述openssl ca命令封装起来通过传入参数域名、有效期等自动完成签发并集成到CI/CD流水线中。脚本必须安全地处理CA私钥密码如通过环境变量或特权管理工具。使用专用工具对于更复杂的环境推荐使用像HashiCorp Vault的PKI引擎、Smallstep的step-ca或EJBCA这样的专业CA软件。它们提供了丰富的API、Web界面、自动轮换、OCSP支持和高可用特性极大地简化了管理。例如使用step-ca可以轻松地通过一个简单的命令启动一个功能完整的私有CA并自动处理大部分繁琐的配置和安全细节。9. 安全最佳实践与踩坑实录搭建私有CA不难但要搭建一个“安全”的私有CA细节决定成败。9.1 密钥与密码管理根CA私钥必须离线这是铁律。任何在线环境都无法保证绝对安全。强密码与定期轮换为所有加密的私钥设置强密码并制定策略定期轮换中间CA的证书和密钥如每年一次。最小权限原则运行中间CA服务的系统账户其权限应被严格限制仅能访问必要的目录和文件。9.2 证书策略短有效期服务器和客户端证书有效期不应过长建议90天或更短。这迫使自动化更新即使证书泄露影响时间也有限。明确的命名规范证书的CN和SAN主题备用名称必须清晰。使用通配符证书需谨慎避免过度授权。细致的扩展密钥用法严格区分serverAuth,clientAuth,codeSigning等用途签发证书时只授予必要的权限。9.3 运维与监控集中日志与审计所有证书签发、吊销操作都必须有详细、不可篡改的日志。证书过期监控使用监控系统如Prometheus Blackbox Exporter或专门工具如certbot的renew_hook或LetsMonitor等SAAS服务监控所有内部证书的过期时间提前告警。定期更新CRL/OCSP确保吊销信息能及时被客户端获取。9.4 常见问题排查表问题现象可能原因排查步骤与解决方案浏览器提示“不受信任的连接”1. 根CA证书未导入客户端信任库。2. 证书链不完整。1. 将root.cert.pem导入操作系统或浏览器的“受信任的根证书颁发机构”。2. 使用openssl verify -CAfile ca-chain.cert.pem server.cert.pem验证链。检查Web服务器配置是否正确发送了中间证书。Nginx/Apache启动失败提示SSL错误1. 私钥与证书不匹配。2. 证书格式错误如PEM/DER混淆。3. 私钥文件权限太开放。1. 使用openssl x509 -noout -modulus -in cert.pem和openssl rsa -noout -modulus -in key.pem检查模数是否一致。2. 确保文件是PEM格式以-----BEGIN XXX-----开头。3. 设置私钥权限为600仅属主可读。客户端证书认证失败1. 服务端未配置要求客户端证书。2. 客户端证书的扩展密钥用法不含clientAuth。3. 客户端未发送证书或发送了错误的证书。1. 检查Nginx的ssl_verify_client或Apache的SSLVerifyClient指令。2. 用openssl x509 -text查看客户端证书的Extended Key Usage。3. 检查客户端如curl是否正确指定了证书和私钥文件curl --cert client.crt --key client.key https://...证书已吊销但客户端仍能访问1. CRL文件未更新或未发布。2. 客户端未配置检查CRL或OCSP。3. OCSP响应服务器故障。1. 重新生成CRL并确保其发布URL可访问。2. 在服务端配置中启用CRL或OCSP装订OCSP Stapling如Nginx的ssl_stapling指令。3. 检查OCSP响应服务日志。踩坑实录我曾遇到过一次紧急情况一个离职员工的客户端证书未及时吊销而他曾用该证书访问过敏感API。由于当时只配置了CRL且客户端的CRL缓存时间设置得很长导致风险窗口期较大。后来我们紧急启用了OCSP装订并在所有新签发的证书中加入了OCSP响应URL强制客户端进行实时状态检查。这个教训让我深刻理解到证书生命周期管理不仅仅是签发吊销和状态查询的实时性同等重要。10. 将CA证书部署到客户端最后要让整个内部系统信任你的CA需要将根CA证书或完整的证书链部署到所有客户端设备服务器、员工电脑、移动设备等。Linux服务器将root.cert.pem或ca-chain.cert.pem拷贝到/usr/local/share/ca-certificates/然后运行sudo update-ca-certificates。Windows通过组策略GPO或手动将根CA证书导入到“受信任的根证书颁发机构”存储区。macOS使用钥匙串访问Keychain Access工具导入并设置为“始终信任”。Java应用需要将证书导入到Java的信任库cacerts中keytool -import -alias my-root-ca -file root.cert.pem -keystore $JAVA_HOME/lib/security/cacerts。浏览器Chrome/Firefox在浏览器设置中手动导入证书。这个过程最好通过自动化配置管理工具如Ansible, SaltStack, Puppet来完成确保一致性。搭建和维护一个私有CA是一项持续的工作但它带来的安全收益和管理便利性是巨大的。从手动管理数百个自签名证书的混乱中解脱出来到拥有一个清晰、自动化的内部PKI体系你会感受到基础设施的秩序之美。关键在于从一开始就规划好架构根离线、中间在线、制定严格的策略短有效期、明确用途并配以自动化和监控工具。当你的CI/CD流水线能够自动为每个新部署的微服务申请和配置好TLS证书时你会觉得这一切的投入都是值得的。

相关新闻

USB协议核心框架与设备枚举实战指南

USB协议核心框架与设备枚举实战指南

1. 项目概述:从“插上就能用”到“协议驱动一切”如果你用过电脑,就一定用过USB。从最早的U盘、鼠标键盘,到现在的手机快充、外置显卡坞,USB接口几乎无处不在。它最大的魅力在于“即插即用”——大多数时候,我们不需要…

2026/10/20 11:06:52 阅读更多 →
Proteus仿真16x16 LED点阵:从元件创建到51单片机驱动全攻略

Proteus仿真16x16 LED点阵:从元件创建到51单片机驱动全攻略

1. 项目概述:为什么要在Proteus里折腾16x16 LED点阵?如果你玩过51单片机,大概率在面包板或者洞洞板上焊过8x8的LED点阵模块,点个爱心、显示个字母,成就感满满。但当你把目光投向更复杂的图案,比如显示一个汉…

2026/10/17 4:58:41 阅读更多 →
局域网共享打印机全攻略:从SMB协议到故障排查

局域网共享打印机全攻略:从SMB协议到故障排查

1. 项目概述:为什么局域网共享打印机是“刚需”? 如果你在办公室、工作室或者家里有多台电脑,但只有一台打印机,那么“局域网共享打印机”这个操作,绝对是你必须掌握的技能。它远不止是省下买多台打印机的钱那么简单。…

2026/10/20 0:00:59 阅读更多 →

最新新闻

Obsidian标签体系完整拆解:四种方案对比与落地模板

Obsidian标签体系完整拆解:四种方案对比与落地模板

开头笔记软件换了又换,最后能让我一直留下来的,反倒是 Obsidian 里那套看起来不起眼的标签系统。我见过不少人把 Obsidian 当成文件夹管理器,一个笔记塞进一个目录,回头找资料就翻了天;也见过更夸张的,半年…

2026/10/20 22:19:42 阅读更多 →
逆向工程自动化:REA与x64dbg-MCP的Agent协同分析实践

逆向工程自动化:REA与x64dbg-MCP的Agent协同分析实践

1. 逆向工程工作流的现状与痛点拆解1.1 传统逆向分析的真实节奏搞过逆向的人都有一个共同感受:这活儿本质上是个"体力活脑力活"的混合体。你拿到一个二进制文件,先扔进反编译器看伪代码,遇到看不懂的地方切到调试器下断点&#xff…

2026/10/20 22:19:42 阅读更多 →
C++实现线程同步的四种方式总结

C++实现线程同步的四种方式总结

前言 多线程编程的核心难点不在「怎么开线程」,而在「多个线程同时访问同一份数据时,如何保证结果可预期」。C 标准把没有同步保护的并发读写称为数据竞争(data race),而数据竞争是未定义行为(undefined be…

2026/10/20 22:19:42 阅读更多 →
通用Agent架构设计:大脑+技能+护栏,重构软件意图驱动新范式

通用Agent架构设计:大脑+技能+护栏,重构软件意图驱动新范式

1. 从“功能堆叠”到“意图驱动”:通用Agent到底在改什么过去十几年,我们做软件的方式基本没变过:产品经理画页面,后端定义接口,前端拼组件,测试写用例,最后打包发版。用户打开一个App&#xff…

2026/10/20 22:19:42 阅读更多 →
JMeter分布式压测Docker化实践:从原理到排坑

JMeter分布式压测Docker化实践:从原理到排坑

第一次在一次大促前的性能摸底中,我把JMeter分布式压测环境从一台台物理机迁到了Docker上,原以为只是把启动命令换成容器方式执行,结果光RMI连接就排查了一个下午。稳定跑起来之后我才确信,这个方向选对了——它解决了我过去两年在…

2026/10/20 22:19:42 阅读更多 →
知识蒸馏进阶:变分信息蒸馏VID原理与实战

知识蒸馏进阶:变分信息蒸馏VID原理与实战

1. 从知识蒸馏的瓶颈说起如果你这两年一直在跟进模型压缩和知识蒸馏方向,大概率会有一种感觉:传统KD(Knowledge Distillation)那套“软标签KL散度”的玩法,在早期分类任务上确实好使,但一旦碰到特征维度高、…

2026/10/20 22:18:29 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →