fajar 阅读(721) 评论(0)

                            The stateOrProvinceName field needed to be same

        一,问题描述

              有时候,并不是所有的情况都是那么的如意,比如说CA颁发机构和签名请求方极低可能是同一家公司或组织,即使是同一家公司或组织也可能是不同的部门,比如说,Android 组的朋友使用 Java 自带的 KeyTool 生成了一个签名请求文件(*.csr)给我来签名,尽管我们所有关键域的值都是一样,但还是签不过,总是报如下问题:

                      The xxx field needed to be same

                      所谓的关键域就是 RFC 5680里面规定的 CountryName、OriginazationName等等

                      

                      是不是很奇怪,为什么 SHANGHAI 和 SHANGHAI 不相同呢????

                     原因就在于 Java 的 KeyTool 生成的签名请求文件的编码格式与 OpenSSL 的默认编码格式不一致,Java KeyTool默认使用就是全部 PRINTABLE 而 OpenSSL 既有 PRINTABLE  也有 ASN 1.12

                     OpenSSL 生成的签名请求文件

                      

                     Key Tool 生成如下

                    

          二,解决方案

                   说了这么多,那如何解决这个问题呢,解决方案就是在配置文件里面,把原来严格匹配的字段改为可选项

                   例如:

                            countryName = match 表示严格校验国家名称

                            countryName = optional 表示可选