云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

企业邮箱_华为张晓云有多厉害_超低折扣

小七 141 0

企业邮箱_华为张晓云有多厉害_超低折扣

简介

我们最近尝试安装的新证书出现问题。证书用于对发送到外部站点的消息进行加密和签名。这是一个新的证书,可以理解,它可能有问题。然而,最有趣的部分是证书在不同平台上的行为非常不同。当证书失效时,我们试图向业务部门请求一个新的证书,大数据分析应用,但他们的回答是,该证书与基于Microsoft的应用程序一起工作,因此问题将出现在PI端。

分析:

我们使用Java映射对消息进行加密和签名,因此对证书加载过程中的哪个部分出错有了一些了解正在发生。在我们继续之前,请注意一下证书别名:

所有密钥存储条目(密钥和证书)都是通过唯一别名访问的。此外,别名不区分大小写 - mycertalias和mycertalias将引用同一个条目。

从密钥库提取证书密钥基本上涉及三个步骤:

我们启用了Java代码日志记录,并发现加载证书时没有问题。

证书加载很好。如果我们看看ks尺寸()返回1.

枚举别名输出别名 - 迄今为止良好

String alias=(String)下一步();

但是,如果使用别名提取证书,则返回空值!

我们从日志中得到的错误信息。我已经用替换了实际的别名

查看涉及的不同部分,我们试图将问题隔离在以下部分:

JVM:我们想看看不同的JVM是否对相同的证书给出不同的结果。JCE:JCE不是标准JAVA安装的标准配置,必须通过安装JAVA加密扩展来扩展。它可以从Oracle下载,扩展可以从这个链接下载。sappijava应用服务器使用IAIK的JCE.

在不同环境中检查证书的测试:

在其他环境中的测试:

这是问题变得更有趣的地方。我们认为证书有问题,大数据对比,上云,我们应该能够在不同的环境中复制该问题。

Test1:NWDS:Standalone test(在Windows环境下):Default JVM/JCE

因此在本地PC上测试时没有发现任何问题。我们认为在PI上运行的JVM可能有问题服务器。我们在托管PI服务器的unix环境中尝试了第二个测试。

Test2:NWDS:独立测试(在unix环境中)和IBM JCE

然后我们认为可能IAIK JCE有问题。所以又做了一个测试。

Test3:NWDS:独立测试(在Windows环境中)使用IAIK JCE提供程序。

现在我们怀疑IAIKJCE图书馆有问题。但是,我们无法访问PI服务器上运行的JCE库版本。我们使用IAIK版本5.51进行测试,该版本可以下载进行测试。

解决方法:

由于这些测试无法确定错误所在,但我们很清楚证书别名存在问题。作为一种解决方法,我们更改了证书别名。

OpenSSL:

OpenSSL是一种用于SSL工具的瑞士军刀,当我们意识到让证书工作的唯一方法是修改它时,它拯救了我们。

一些示例:

-提取未加密的密钥文件

-提取客户端证书

-提取CA证书(根证书)和所有中间证书)

所以我们能够提取客户端证书。别名(友好名称)的示例屏幕截图。

初始解决方法:

要提取私钥,请运行OpenSSL命令:

要提取证书(公钥),请运行OpenSSL命令:

然后我们使用OpenSSL组装证书。

为证书添加别名的示例:

因此这提供了使用新别名的解决方法但是,云服务器网址,我们仍然不太清楚为什么在不同的平台上会出现这种差异,

然后我复制了Java map中与将证书作为适配器模块加载相关的部分,以便可以在不同的PI版本中轻松测试。然后我在SAP CAL library中启动了一个SAP PO实例(PO版本为PO 7.5),令人惊讶的是,大数据在线,这个问题仍然存在。

更简单的解决方法

引发了一个SAP事件并得到了更简单的解决方法。

由于证书的问题只出现在SAP PI application server中,而且到处都很好,我们提出了一个SAP事件。问题似乎出在iaikjce库的版本上,我们正在使用它处理别名中的不可打印字符。我们还建议了一种比openssl更易于使用的解决方法。

步骤非常简单:

在NWA中使用现有的证书视图。导入证书。

现在使用NWA导出证书。

可以下载证书,并且具有不同的有效别名。

在我们修改证书之前,我们得到了以下跟踪。

现在它被加载。

结论和关键要点:

来自此博客的关键要点:

使用证书的典型步骤包括加载证书、提取别名属性,然后使用别名获取密钥/证书。SAP PI NWA Keystore将别名设置为文件名,因此可以用于修复别名问题。更高版本的os SAP PI/PO 7.5根据SAP解决了问题。但是,我还没有测试过它—SAP PO Cal有IAIKJCE版本3.181,但问题仍然存在。我已经创建了一个适配器模块,可以用来测试不同的系统https://github.com/viksingh/CheckCert