OpenSSL签发证书时编码UTF8STRING PRINTABLESTRING不匹配
问题如下:
Check that the request matches the signature
Signature ok
The countryName field is different between
CA certificate (CN) and the request (CN)
可以看出,CA和REQ的DN内容是一致的,依旧报错。其实是编码的问题。
使用以下指令看编码格式:
openssl asn1parse -in /etc/pki/CA/cacert.pem
openssl asn1parse -in server01.csr
请求文件的countryName是UTF8STRING,CA证书是PRINTABLESTRING。
在openssl.cnf配置文件中有个字符编码设置string_mask=utf8only。虽然要求openssl ca证书字段都为utf8,但实际上DN的countryName仍然为PRINTABLESTRING。
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask = utf8only
查阅了很多资料,都不太好处理或者无效。提供两个简单方法,1、修改签发证书的匹配策略来解决该问题。
[ policy_match ]
countryName = supplied
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
即,将countryName原来的match修改supplied,绕过匹配。
2、修改csr文件DN域的格式为V_ASN1_PRINTABLESTRING
X509_NAME_add_entry_by_txt(x509_name, "CN", V_ASN1_UTF8STRING, (const unsigned char*)pbCN, -1, -1, 0);X509_NAME_add_entry_by_txt(x509_name, "OU", V_ASN1_UTF8STRING, (const unsigned char*)pbOU, -1, -1, 0);X509_NAME_add_entry_by_txt(x509_name, "O", V_ASN1_UTF8STRING, (const unsigned char*)pbO, -1, -1, 0);X509_NAME_add_entry_by_txt(x509_name, "L", V_ASN1_UTF8STRING, (const unsigned char*)pbL, -1, -1, 0);X509_NAME_add_entry_by_txt(x509_name, "ST", V_ASN1_UTF8STRING, (const unsigned char*)pbST, -1, -1, 0);X509_NAME_add_entry_by_txt(x509_name, "C", V_ASN1_PRINTABLESTRING, (const unsigned char*)pbC, -1, -1, 0);
OpenSSL签发证书时编码UTF8STRING PRINTABLESTRING不匹配相关推荐
- 用openssl签发证书
导言: 有时候,使用SSL协议是自己内部服务器使用的,这时可以不必去找第三方权威的CA机构做证书,可以做自签证书 使用openssl签发证书分为四个步骤:生成密钥对.生成证书请求.创建一个root C ...
- OpenSSL 制作证书时出现的错误的解决办法
在制作证书的过程中遇到的问题及解决办法: 出现:I am unable to access the ./demoCA/newcerts directory ./demoCA/newcer ...
- 在openssl申请证书时遇到的问题解决
关于 can't open config file: z:/strawberry_libs/build/2013Q3/ssl/openssl.cnf问题解决 一开始运行openssl的时候就产生一条W ...
- 使用OpenSSL签发证书
安装OpenSSL OpenSSL下载地址:http://slproweb.com/products/Win32OpenSSL.html 安装完以后一路点下去即可. 配置OpenSSL 配置Path ...
- 使用OpenSSL生成/签发证书的原理、流程与示例
文章目录 1 生成证书的步骤与原理 2 标准的CA签发流程 2.1 创建私钥(.key) 2.2 基于私钥创建证书签名请求(.csr) 2.3 (可选)直接同时生成私钥和证书签名请求 2.4 将证书申 ...
- Linux 使用openssl ca方式签发证书
前言 Linux 使用openssl x509方式签发证书(推荐用这种方式):https://blog.csdn.net/QianLiStudent/article/details/109818208 ...
- openssl 自建CA签发证书 网站https的ssl通信
<<COMMENT X509 文件扩展名 首先我们要理解文件的扩展名代表什么.DER.PEM.CRT和CER这些扩展名经常令人困惑. 很多人错误地认为这些扩展名可以互相代替.尽管的确有时候 ...
- OpenSSL生成root CA及签发证书
一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现.官网:https://www.openss ...
- 使用Openssl签发SSL证书
本文主要记述在Linux系统上使用Openssl创建SSL证书的流程,作为个人学习笔记.自签名证书分为自签名私有证书和自签名CA证书两种.自签名私有证书无法被吊销,自签名CA证书可以被吊销. 什么是o ...
最新文章
- html5赛车小游戏,html5公路赛车小游戏
- linux安装mysql、卸载mysql、设置mysql
- 有趣的js匿名函数写法(function嵌套)
- 前端学习(1955)vue之电商管理系统电商系统之完成添加分类功能
- python编程遍历_Python字典遍历操作实例小结
- 基于matlab 系统仿真学报,基于MATLAB/Simulink的混合动力汽车正向仿真软件的开发...
- SaCa DataViz 企业版 | 高性能大数据分析引擎
- JVM调优大全及实战总结
- 迅雷/快车/旋风地址转换器
- java中整数和字符串间的转换方法
- UVA - 11520 Fill the Square
- 孙鑫VC学习笔记:第十八讲 ActiveX 控件
- xml 操作组件(NewLife.XCode)
- 2018年国内十大技术突破:22纳米光刻机、大型航天器回收
- 如何通过dba_hist_active_sess_history分析数据库历史性能问题
- Visual Studio2019配置备忘
- 注塑行业APS解决方案
- 【thinkphp5操作redis系列教程】集合类型之sCard,sSize
- HTML中背景透明有阴影,透明PNG在网页有阴影的解决方法
- jena 查询 java_使用SPARQL和Jena查询DBpedia
热门文章
- Response.Redirect ,Server.Excute和Server.Transfer区别详解
- 常用的开始→运行→输入命令集锦
- [导入]ASP.NET 2.0中Page事件的执行顺序
- 什么是非集计模型_集计与非集计模型的关系
- linux hlist,linux内核V2.6.11学习笔记(2)--list和hlist
- java 03_Java基础03—流程控制
- linux语言的说明顺序有哪些,(linux常用头文件详解.doc
- 2021高考成绩查询内蒙时间,2021内蒙古高考成绩什么时候几点可以查
- wordpress后台添加子菜单 add_submenu_page()
- js上传文件;input上传文件;