OpenSSL命令不会用?教你7个PEM转换必备指令,运维人必看

OpenSSL实战:ECDSA密钥PEM与DER格式转换全解析 在非对称加密体系中,密钥的编码与封装是保障数据安全传输的基础环节。ECDSA(椭圆曲线数字签名算法)因其高安全性和短密钥长度,广泛应用于HTTPS、API签名和区块链等领域。其核心原理基于椭圆曲线数学,通过公钥与私钥的配对实现身份认证和数据完整性验证。在实际工程中,密钥常以PEM(文本封装)和DER(二进制编码)两种格式存储,而不同系统或工具对格式的要求各异,这构成了密钥管理中的常见痛点。掌握OpenSSL工具链下的格式转换技能,能有效解决TLS握手失败、API认证错误等部署问题,确保微服务、区块链节点等场 阅读详情

第一章:PEM格式基础与OpenSSL入门

PEM(Privacy Enhanced Mail)是一种基于Base64编码的文本格式,广泛用于存储和传输加密密钥、证书及证书请求。尽管其名称源于早期电子邮件安全标准,如今PEM已成为TLS/SSL体系中不可或缺的数据封装方式。PEM文件通常以 `.pem`、`.crt`、`.key` 或 `.csr` 为扩展名,内容以 `-----BEGIN ...-----` 开头,以 `-----END ...-----` 结尾。

PEM格式结构解析

PEM文件的核心是Base64编码的DER(Distinguished Encoding Rules)数据,外层由ASCII文本封装。常见类型包括:
  • 证书:以 -----BEGIN CERTIFICATE----- 标识
  • 私钥:可能为未加密或加密形式,标识为 -----BEGIN PRIVATE KEY----- 或 -----BEGIN ENCRYPTED PRIVATE KEY-----
  • 证书签名请求(CSR):-----BEGIN CERTIFICATE REQUEST-----

使用OpenSSL生成PEM密钥对

OpenSSL 是处理PEM格式最常用的开源工具。以下命令生成一个2048位RSA私钥并保存为PEM格式:
# 生成RSA私钥(PEM格式)
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

# 从私钥提取公钥(同样以PEM格式输出)
openssl pkey -in private_key.pem -pubout -out public_key.pem
上述命令中,genpkey 支持多种算法,而 -pkeyopt 指定密钥参数。输出的私钥文件默认采用PKCS#8格式,兼容性更佳。
PEM与DER格式对比
特性PEMDER
编码方式Base64 ASCII二进制
可读性高(文本格式)低(需十六进制查看)
典型用途配置文件、Web服务器Java应用、嵌入式系统
graph LR A[原始DER数据] --> B[Base64编码] B --> C[添加BEGIN/END标签] C --> D[生成PEM文件]

第二章:PEM与其他证书格式的转换实战

2.1 理解PEM、DER、CRT、CER与PFX格式的本质区别

数字证书在传输和存储过程中采用多种编码与封装格式,其差异主要体现在编码方式、用途及是否包含私钥。
常见格式解析
  • PEM:Base64编码的文本格式,常用于Linux/Unix系统,文件扩展名通常为.pem或.crt。
  • DER:二进制编码格式,多用于Windows系统,不可读,扩展名为.der。
  • CRT/CER:通用证书文件,可为PEM或DER编码,仅包含公钥证书。
  • PFX(PKCS#12):二进制格式,包含证书链与私钥,常用于导入导出,扩展名为.pfx或.p12。
格式转换示例

# PEM转DER
openssl x509 -in cert.pem -outform der -out cert.der

# PFX提取私钥与证书
openssl pkcs12 -in cert.pfx -nocerts -out key.pem -nodes
上述命令将PEM证书转换为DER格式,并从PFX包中分离私钥。参数-nodes表示不对私钥加密,适用于自动化部署场景。

2.2 将PFX证书转换为PEM格式(含私钥与证书链)

在多平台部署中,常需将Windows兼容的PFX证书转换为OpenSSL支持的PEM格式。该过程可分离私钥、用户证书及完整证书链,便于在Nginx、Apache等服务中使用。
转换命令详解
使用OpenSSL执行转换:
openssl pkcs12 -in cert.pfx -out cert.pem -nodes
其中 -in 指定输入PFX文件,-out 指定输出PEM路径,-nodes 表示不对私钥加密。执行后,cert.pem 包含私钥、用户证书和CA链。
输出内容结构
生成的PEM文件按以下顺序排列:
  • PRIVATE KEY(未加密私钥)
  • CERTIFICATE(用户证书)
  • CERTIFICATE(中间CA证书)
  • CERTIFICATE(根CA证书,如有)
此格式确保服务能正确构建信任链,适用于TLS双向认证等场景。

2.3 从PEM提取公钥并转换为DER格式

在证书处理过程中,常需将PEM格式的公钥提取并转换为二进制的DER格式,以便嵌入二进制协议或进行哈希计算。
PEM与DER格式对比
  • PEM:Base64编码的文本格式,便于传输和查看
  • DER:二进制编码,适用于程序解析和存储
使用OpenSSL命令转换
openssl rsa -pubin -in public.pem -outform DER -out public.der
该命令从public.pem中读取PEM格式公钥,使用-outform DER指定输出为DER格式。参数-pubin表明输入为公钥而非私钥。
自动化脚本示例
可结合Shell脚本批量处理:
for pem in *.pem; do
  openssl x509 -pubkey -noout -in "$pem" | \
  openssl pkey -pubin -inform PEM -outform DER -out "${pem%.pem}.der"
done
此流程先提取X.509证书中的公钥(PEM),再转为DER格式,适用于批量证书部署场景。

2.4 把CRT证书批量转换为PEM格式的自动化方法

在运维场景中,常需将多个CRT格式证书统一转换为PEM格式以适配服务部署。手动逐个转换效率低下,自动化脚本成为必要选择。
使用OpenSSL与Shell脚本批量处理
通过遍历目录中的所有 `.crt` 文件,结合 `openssl` 命令实现批量转换:

#!/bin/bash
for cert in *.crt; do
  pem="${cert%.crt}.pem"
  openssl x509 -in "$cert" -out "$pem" -outform PEM
  echo "Converted: $cert -> $pem"
done
该脚本利用参数扩展 `${cert%.crt}` 去除文件后缀并替换为 `.pem`,循环调用 `openssl x509` 完成格式转换。`-outform PEM` 明确指定输出为PEM编码格式,兼容性强。
支持子目录递归的增强逻辑
可结合 `find` 命令实现深层目录扫描与转换:
  • 使用 find . -name "*.crt" 定位所有证书文件
  • 通过管道传递至 while 循环逐个处理
  • 确保复杂目录结构下的完整性覆盖

2.5 验证转换后PEM文件的有效性与完整性

在完成证书格式转换后,必须验证生成的PEM文件是否有效且完整,以确保其可在目标环境中正常加载。
检查PEM文件结构
有效的PEM文件应包含以 -----BEGIN CERTIFICATE----- 开头、-----END CERTIFICATE----- 结尾的Base64编码数据。可通过以下命令验证:
openssl x509 -in certificate.pem -text -noout
该命令解析PEM内容并输出证书详细信息。若提示“unable to load certificate”,则表明文件格式或编码错误。
校验完整性与一致性
使用哈希值比对源文件与转换结果,确保数据未被篡改:
  • 计算原始文件SHA256:sha256sum cert.der
  • 将PEM重新编码为DER后比对哈希,确认一致性
此外,可借助脚本批量验证多个PEM文件的有效性,提升运维效率。

第三章:PEM密钥管理与安全操作

3.1 生成符合标准的PEM格式私钥与公钥

在现代加密通信中,PEM(Privacy-Enhanced Mail)格式是存储和传输密钥及证书最常用的编码方式之一。它基于Base64编码,并以清晰的标识头尾界定内容。
使用OpenSSL生成RSA私钥

openssl genpkey -algorithm RSA -out private_key.pem -aes256
该命令生成一个2048位的RSA私钥,默认采用PKCS#8格式保存为PEM文件。参数-aes256用于对私钥进行加密保护,避免明文存储风险。
从私钥提取公钥

openssl pkey -in private_key.pem -pubout -out public_key.pem
此命令读取私钥文件并导出对应的公钥,输出结果以-----BEGIN PUBLIC KEY-----开头,符合X.509标准的通用公钥格式。
PEM结构对比
类型起始标记用途
私钥-----BEGIN PRIVATE KEY-----解密与签名
公钥-----BEGIN PUBLIC KEY-----加密与验证

3.2 加密保护PEM私钥文件的最佳实践

在处理PEM格式的私钥文件时,未加密的存储方式极易导致安全泄露。为增强安全性,应始终使用强密码对私钥进行加密保护。
使用OpenSSL加密私钥
通过以下命令可生成经AES-256-CBC加密的PEM私钥:
openssl genpkey -algorithm RSA -out private_key.pem -aes-256-cbc -pass pass:YourStrongPassword
该命令中,-aes-256-cbc 指定加密算法,-pass 提供加密口令。生成的私钥需配合口令才能解密使用,显著提升安全性。
推荐的安全策略
  • 使用高强度密码(至少12位,含大小写、数字和特殊字符)
  • 定期轮换密钥并更新加密口令
  • 限制私钥文件的文件系统权限(如 chmod 600)
  • 避免在代码或配置中硬编码密码

3.3 检查PEM密钥内容与参数的安全合规性

密钥格式与结构验证
PEM格式密钥以Base64编码存储,需确保其起始和结束标记正确。常见类型包括`-----BEGIN PRIVATE KEY-----`和`-----END PRIVATE KEY-----`。非法修改或截断会导致解析失败。
使用OpenSSL检查密钥参数
可通过以下命令查看RSA私钥的模数、指数等关键参数:
openssl rsa -in key.pem -noout -text
该命令输出密钥的位数、公钥指数、质因数信息。应确认密钥长度≥2048位,且无弱指数(如e=3)。
安全合规检查清单
  • 密钥长度不低于2048位(推荐4096位)
  • 排除已知弱密钥(如Debian OpenSSL漏洞生成的密钥)
  • 禁止私钥文件暴露在公网或版本控制系统中
  • 确保证书链完整且由可信CA签发

第四章:运维场景中的PEM应用技巧

4.1 在Nginx/Apache中部署PEM格式证书的正确方式

在配置HTTPS服务时,PEM格式证书因其兼容性广而被广泛采用。正确部署需确保私钥与证书链完整且顺序正确。
证书文件准备
PEM格式通常包含服务器证书、中间证书和私钥文件。合并中间证书至主证书可避免链不完整问题:
cat your_domain.crt intermediate.crt > bundled.crt
该命令将域名证书与中间证书合并为一个捆绑文件,确保客户端可验证完整信任链。
Nginx配置示例
server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/bundled.crt;
    ssl_certificate_key /path/to/private.key;
    ssl_protocols TLSv1.2 TLSv1.3;
}
ssl_certificate 指向合并后的证书文件,ssl_certificate_key 为私钥路径,二者必须可读且路径正确。
Apache配置要点
  • 启用mod_ssl模块
  • 使用SSLCertificateFile指向bundled.crt
  • SSLCertificateKeyFile指定私钥位置
确保私钥无密码保护,否则重启服务需手动输入密码。

4.2 使用OpenSSL合并多个PEM证书形成完整链

在配置HTTPS服务或客户端双向认证时,常需将多个PEM格式的证书合并为完整的信任链。正确顺序是:服务器证书 → 中间CA证书 → 根CA证书(可选)。
证书合并操作步骤
使用以下命令将多个PEM文件按顺序合并为单一文件:

# 合并证书,形成完整链
cat server.crt intermediate.crt root.crt > fullchain.pem
该命令将服务器证书、中间CA证书和根证书依次拼接。OpenSSL要求证书顺序从最具体的实体证书向更高级别的CA递进,否则链验证会失败。
验证合并后的证书链
可通过OpenSSL命令检查链的完整性:

openssl verify -CAfile ca-bundle.crt fullchain.pem
其中 -CAfile 指定受信任的CA包,fullchain.pem 为待验证的合并文件。输出“OK”表示链式结构有效。

4.3 脚本化检测服务器上PEM证书过期时间

使用OpenSSL提取证书信息
在Linux环境中,可通过openssl x509命令解析PEM格式证书的有效期。以下脚本从目标服务器获取远程证书并输出其过期时间:
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -enddate | cut -d= -f2
该命令链首先建立TLS连接,提取证书后通过-noout -enddate仅输出过期时间,cut用于分离日期字段。
自动化监控流程
为实现批量检测,可编写Shell脚本遍历服务器列表,并记录剩余天数:
  • 读取包含域名和端口的配置文件
  • 对每个条目执行证书检查
  • 计算过期时间与当前日期的差值
  • 当日数低于阈值时触发告警
结合cron定时任务,可实现每日自动巡检,保障证书持续有效。

4.4 多环境同步PEM证书的配置管理策略

在多环境架构中,确保 PEM 格式证书的一致性与安全性是配置管理的关键环节。通过集中化存储和自动化分发机制,可有效降低配置漂移风险。
配置同步流程
采用 GitOps 模式将证书纳入版本控制,结合 CI/CD 流水线实现跨开发、测试、生产环境的自动同步。
自动化部署示例

apiVersion: v1
kind: Secret
metadata:
  name: tls-certificate
type: kubernetes.io/tls
data:
  tls.crt: <base64-encoded-pem-certificate>
  tls.key: <base64-encoded-pem-key>
该 Kubernetes Secret 定义将 PEM 证书与私钥以 base64 编码形式注入集群,确保传输安全。通过 ArgoCD 等工具监听 Git 仓库变更,触发多环境同步更新。
权限与轮换策略
  • 使用 Hashicorp Vault 管理证书生命周期
  • 设定自动轮换周期为 90 天
  • 基于 RBAC 控制访问权限

第五章:总结与运维建议

建立自动化巡检机制
定期对系统关键指标进行健康检查,可显著降低故障响应时间。以下是一个基于 Shell 脚本的简易巡检示例:

#!/bin/bash
# check_system_health.sh
echo "CPU Usage:"
top -bn1 | grep "Cpu(s)" | awk '{print $2}' | head -1

echo "Memory Usage:"
free -m | awk 'NR==2{printf "%.2f%%\n", $3*100/$2 }'

echo "Disk Usage:"
df -h / | awk 'NR==2 {print $5}'
将该脚本加入 crontab,每小时执行一次,并通过邮件或企业微信推送异常告警。
日志集中管理策略
建议使用 ELK(Elasticsearch + Logstash + Kibana)或轻量级替代方案如 Loki + Promtail + Grafana 实现日志聚合。关键服务的日志应包含结构化字段(如 JSON 格式),便于后续检索与分析。
  • 确保所有应用输出日志到标准输出(stdout)
  • 使用统一的时间戳格式(ISO 8601)
  • 为日志添加 trace_id,支持跨服务链路追踪
  • 设置合理的日志保留周期,避免磁盘溢出
容量规划与性能基线
维护一份核心服务的性能基线表格,用于对比和预警:
服务名称平均响应时间 (ms)峰值QPSCPU 使用率 (%) 内存占用 (GB)
订单服务451200683.2
用户认证28950522.1
当监控数据显示偏离基线超过 20%,触发容量评估流程。
手把手教你用OpenSSL在Windows上转换证书格式:从CRT到PEM的完整流程 本文详细介绍了在Windows平台上使用OpenSSL将CRT证书转换为PEM格式的完整流程,包括环境配置、命令详解和实战技巧。通过OpenSSL工具,用户可以高效完成证书格式转换,适用于运维工程师和开发者。文章还提供了批量转换脚本和常见问题解决方案,帮助用户轻松应对各种证书管理需求。 阅读详情

相关推荐

SSL证书格式转换实战:PEM、DER、PKCS#12详解与OpenSSL操作指南

SSL/TLS证书是保障网络通信安全的基础技术,其核心原理基于非对称加密与数字签名机制,确保数据传输的机密性与完整性。在工程实践中,不同平台与服务器对证书格式的要求各异,这催生了证书格式转换这一关键技术需求。理解PEM、DER等编码格式以及PKCS#12等容器格式的差异,能有效解决部署中的‘key values mismatch’、‘证书链不完整’等常见问题,提升HTTPS服务配置的效率和可靠性。特别是在微服务与容器化场景下,通过Nginx等网关统一管理证书,是实现高效、安全运维的重要模式。本文聚焦SSL证

weixin_34055787的博客 347

Https中相关证书的关系

Https中相关证书的关系 Https中相关证书的关系图:

dongkun152的专栏 3573

证书格式转换实战:从PEM、DER到PKCS#12/JKS的运维指南

在公钥基础设施(PKI)体系中,数字证书是建立网络信任和加密通信的核心凭证。其核心原理基于非对称加密技术,通过公钥和私钥的配对实现身份认证与数据加密。这一技术价值在于为HTTPS、API安全、微服务间通信等场景提供了基础的安全保障。然而,不同系统和平台使用各异的证书格式——如PEM、DER、PKCS#12和JKS——导致了跨环境部署时的兼容性难题。证书格式转换因此成为运维与开发中的关键实践,它涉及编码方式(如Base64与二进制DER)、容器格式(如单文件与打包归档)的相互转化。掌握以OpenSSL为核心的

weixin_33895657的博客 346

如何生成 `cert.pem` 和 `key.pem` 文件?

WSL2Flask。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 4196

OpenSSL证书格式转换实战:PEM与DER互转原理与避坑指南

数字证书是网络安全与身份认证的基石,广泛应用于HTTPS、VPN、API认证等场景。其核心基于X.509标准与ASN.1抽象语法定义,而DER(可辨别编码规则)作为其标准的二进制编码格式,结构紧凑、解析高效。为便于文本系统传输与人工查看,PEM格式通过Base64编码与明确的首尾标签对DER进行封装,形成了常见的.pem、.crt等文件。理解PEM与DER这两种核心编码存储格式的差异与转换原理,是解决跨系统证书部署、调试与集成问题的关键。本文聚焦于使用OpenSSL工具进行PEM与DER格式的高效、准确互转

weixin_27199085的博客 242

HTTPS证书格式全解析:PEM、DER、CRT、PFX区别与OpenSSL实战转换

在构建安全网络通信时,数字证书和密钥是实现HTTPS加密、身份验证的基石。其核心原理基于非对称加密体系,公钥用于加密,私钥用于解密,而证书则是由可信机构签发的公钥凭证。这项技术的核心价值在于为网站和服务提供机密性、完整性与身份可信保障,广泛应用于Web服务器、API接口、微服务间通信等场景。实践中,证书和密钥常以不同格式存储,例如PEM、DER、CRT、PFX等,这源于编码方式(如Base64文本或二进制)和封装标准(如PKCS#12)的差异。针对常见的运维与开发需求,掌握使用OpenSSL工具在不同格式间

diaoju3333的博客 433

OpenSSL生成cert.key和cert.pem

SSL(Secure Socket Layer),为Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。一般通用的规格为40 bit的安全标准,美国则已推出128 bit的更高安全标准,但限制出境。只要3.0版本以上的I.E.或Netscape浏览器即可支持SSL。 ...

ck784101777的博客 1万+

蓝易云 - 使用openssl进行证书格式转换

摘要:本文提供OpenSSL证书格式转换实战指南,涵盖PEM/DER/PFX等常见格式互转方法。重点包括:PEM与DER互转、PEM+私钥转PFX(适用于IIS)、PFX拆解为PEM、PKCS#1与PKCS#8私钥格式转换等核心场景。文中给出详细命令示例和使用场景对照表,并强调私钥文件权限管理(chmod 600)和传输安全注意事项。通过标准化证书转换流程,可有效解决Nginx、IIS及各类设备对证书格式的不同要求。(150字)

高性价比服务器就选:蓝易云 666

HTTPS证书的生成与配置

环境说明: 内网环境,前后端分离,nginx部署前端服务,springbot部署后端服务。 证书获取途径 1、正规机构颁发 优点:正规,浏览器校验通过。 缺点:需要通过真实的域名去申请,并按年交纳一定费用。 2、自行签发 优点:自行通过证书生成工具生成,无需绑定域名方便免费,使用服务器IP即可生成证书。 缺点:因无法校验颁发机构,,浏览器提示不安全。 keytool生成证书 原因 因为是内网环境,...

Beam 6631

配置Dot1q终结子接口实现跨设备VLAN间通信示例

示例图 一.实验目的 1.配置Dot1q终结子接口实现跨设备VLAN间通信示例 二.注意事项 1.Dot1q终结子接口和QinQ终结子接口不支持透传不带VLAN Tag的报文, 收到不带VLAN Tag的报文会直接丢弃 2.由于三层以太网子接口不支持VLAN报文,当它收到VLAN报文时,会将VLAN报文当成是 非法报文而丢弃,因此,需要在子接口上将VLAN Tag剥掉,也就是需要VLAN终结 三.VLAN终结简介 1.VLAN终结的实质包含两个方面: ①.对接口接收到报文,剥除VLAN标

qq_44751470的博客 7097

【深度解析】AURIX TC387 UCB Flash架构与避坑指南(第一篇)

摘要:UCB(用户配置块)是AURIX TC3xx芯片启动与安全的关键配置区域,位于DFLASH0存储区。每个512字节的UCB包含启动模式、安全设置等关键参数,并通过强制CRC32校验确保完整性。UCB分为启动头(UCB_BMHD)、安全配置(UCB_ORIG)及其备份(UCB_COPY)三种主要类型。不同于常规Flash,UCB具有自动擦除特性,错误配置可能导致芯片永久锁死。开发中应谨慎修改UCB,必须同时编程原始和备份版本,并确保正确的CRC校验。后续文章将详细介绍UCB编程方法和调试技巧。

2511_94612429的博客 1236

微信支付cert.p12导出证书key.pem格式、证书密钥cert.pem格式以及证书序列号

微信支付cert.p12导出证书key.pem格式、证书密钥cert.pem格式以及证书序列号

weixin_44711162的博客 8095

ArcMap实战:用栅格计算器搞定16年NDVI趋势分析,附完整F检验流程

本文详细介绍了如何使用ArcMap的栅格计算器进行16年NDVI趋势分析,包括数据预处理、线性趋势计算和F显著性检验的全流程操作。通过实际案例和统计原理解析,帮助GIS从业者掌握植被覆盖变化的分析方法,特别适合生态评估和农业监测应用。

weixin_29251567的博客 254

如何将PFX证书转换为PEM格式?

先别急着敲命令,有几个坑得先避开:1.私钥密码别乱输:PFX导出时设置的密码,转换过程中会要你输三次... 第一次是读取PFX,后两次是设置PEM私钥的密码,记混了就等着从头再来吧2.证书链不能少:很多人只转了服务器证书,把中间证书忘了,结果浏览器照样报"不安全"3.文件权限是个坑:转换完的PEM文件如果权限设成777,Nginx会直接拒绝加载,这细节特容易忽略。对了,如果你用的是锐安信证书,他们官网那个"证书转换"工具其实就是基于OpenSSL做的可视化界面,填好参数自动生成命令,对新手挺友好的。

zzr888的博客 959

U8采购入库单CO接口开发实战:加载、新增与删除操作详解

本文详细解析了用友U8采购入库单CO接口的开发实战,重点介绍了加载、新增与删除三大核心操作的实现方法。通过C#代码示例和实际项目经验,帮助开发者高效处理采购入库单,提升企业供应链管理效率。文章还涵盖了环境配置、异常处理、性能优化等关键技巧,适合U8二次开发人员参考。

weixin_33462927的博客 377

基于大疆TSDK与Pix4D的热红外数据工程化处理:从RJPG到温度正射影像的完整工作流

本文详细介绍了基于大疆TSDK与Pix4D的热红外数据工程化处理完整工作流。通过Python脚本自动化解析RJPG格式的热红外图像,提取并转换其中的原始辐射数据为包含真实温度信息的TIFF文件,再结合Pix4Dmapper进行批量拼接,最终生成可直接用于GIS分析的温度正射影像图。该流程解决了手动处理效率低下、参数校准复杂等难题,实现了从原始数据到定量分析成果的高效、准确、可重复生产。

weixin_29161785的博客 377

【PEM证书解析终极指南】:掌握OpenSSL命令行解析技巧与常见问题解决方案

掌握PEM编码的证书解析方法,轻松解决证书查看、转换与验证难题。涵盖OpenSSL命令行操作详解,适用于HTTPS部署、证书链校验等场景,提升排查效率。方法实用,兼容主流系统,值得收藏。

PixelGlow的博客 888

智能工厂评估模型研究

摘要:通过对国内外现有智能制造评估模型的研究,结合重庆制造业行业领跑者与落后者之间差距大的现状,以实现全要素全连接的数字化工厂为出发点,融合工业互联网标识,构建实践可行的智能工厂评估模型推动中小型企业参与智能制造转型,缓和两极分化问题。本评估模型包含工厂体系架构的3个层级,提供用于推动智能制造转型的参考,包括设计、生产、管理的全过程评估。关键词:智能制造评估模型;智能制造转型;全连接工厂;工业互联网标识0 引言受行业需求与技术创新的影响,全球制造业在历经了工业1.0机械化、工业2.0电气化和工业3.0自动

罗伯特技术屋 679

OpenSSL证书转换全攻略:从PEM到PFX的保姆级教程(附常见错误排查)

本文提供了一份详细的OpenSSL证书转换指南,涵盖从PEM、DER到PFX/P12等格式的转换原理与实战命令。文章深入解析了证书编码本质、私钥格式差异以及容器格式处理,并附带了常见错误排查方法与自动化脚本,旨在帮助开发、运维人员高效解决跨平台部署中的证书兼容性问题。

pz8901234的博客 654

YOLOv8改进-bifpn

跨尺度连接通过添加一个跳跃连接和双向路径来实现,自此实现了加权融合和双向跨尺度连接。该结构是加权且双向连接的,即自顶向下和自底向上结构,通过构造双向通道实现跨尺度连接,将特征提取网络中的特征直接与自下而上路径中的相对大小特征融合,保留了更浅的语义信息,而不会丢失太多的深层语义信息。传统的特征融合时将尺度不同的特征图以相同权重进行加权,但是当输入的特征图分辨率不同时,以相同的权重进行加权对输出的特征图不平等。所以BiFPN根据不同输入特征的重要性设置不同的权重,同时反复采用这种结构来加强特征融合。

weixin_45303602的博客 8139

青少年C/C++软件编程(四级)等级考试真题及答案解析目录

3. 带通配符的字符串匹配。1. 怪盗基德的滑翔翼。3.最长公共子上升序列。4.宠物小精灵之收服。

长春高老师编程 3035

PEM证书解析避坑指南:9个常见错误及修复方案,运维必看

掌握PEM编码的证书解析技巧,避开运维常见陷阱。详解9个典型错误及修复方案,覆盖Nginx配置、私钥匹配等场景,提升排查效率。方法实用、步骤清晰,运维人员值得收藏。

ProceNest的博客 759

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何在5分钟内完成PEM到P12的安全转换?这个工具你必须掌握

快速掌握PEM的格式转换技巧,5分钟安全完成PEM到P12的转换。适用于HTTPS部署、服务器配置等场景,使用OpenSSL命令一键生成,操作简单且兼容性强。保障证书安全,提升工作效率,值得收藏。

PixelWander的博客 1117

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Windows下OpenSSL证书格式转换实战:PEM/PFX/DER互转与安全实践

在网络安全与系统集成领域,数字证书是实现HTTPS加密通信、身份验证的核心组件。其工作原理基于非对称加密体系,通过公钥与私钥的配对保障数据传输的机密性与完整性。证书的技术价值在于为网络服务建立可信身份,防止中间人攻击,是电子商务、API安全、远程访问等场景的基石。常见的证书格式如PEM、PFX、DER等,因编码和封装方式不同,常导致跨平台部署时的兼容性问题。特别是在Windows环境中,IIS服务器通常需要PFX格式,而Linux服务多使用PEM格式,这种差异使得掌握高效的格式转换技能成为运维和开发人员的必

weixin_33816300的博客 417

HoRain云--OpenSSL证书转换全攻略

本文介绍了使用OpenSSL工具进行常见证书格式转换的方法。文章首先列举了PEM、DER、PFX/P12等主流证书格式的特点,然后提供了5种最常用的转换命令,包括PEM转DER、PFX转PEM等实用操作。特别强调了处理私钥时的安全注意事项,并分享了实际应用场景示例和常见问题解答。通过详细的命令行示例和实用建议,帮助读者轻松完成各类证书格式转换需求,适合开发和运维人员参考使用。

2401_86544677的博客 447

【PEM格式转换全攻略】:掌握5种关键转换技巧,提升证书处理效率

掌握PEM的格式转换技巧,轻松解决证书兼容性问题。涵盖PEM转DER、PFX互转等5种常用方法,适用于Nginx、Apache等服务器部署场景,提升运维效率。操作简单、安全可靠,值得收藏。

ProceSeed的博客 1004
上一篇: 掌握模块化设计的6大好处,轻松应对复杂系统演进
下一篇: 从零搞定向量运算:4种基础类型+2种进阶用法,一文打通行业壁垒
IterStream
博客等级 码龄1年 152粉丝 2112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值