java.io.IOException: toDerInputStream 拒绝标签类型 77

Posted

技术标签:

【中文标题】java.io.IOException: toDerInputStream 拒绝标签类型 77【英文标题】:java.io.IOException: toDerInputStream rejects tag type 77 【发布时间】:2021-04-17 15:53:55 【问题描述】:

我正在尝试使用 Java 从 weblogic 服务器读取 pfx 证书,但我收到 java.io.IOException: toDerInputStream rejects tag type 77

【问题讨论】:

我们需要查看minimal reproducible example,包括您的文本代码以及错误消息的完整堆栈跟踪。 【参考方案1】:

这是给我的。 当我以字符串形式下载为 base64 时。 我的代码需要它在 byte[], 我的代码告诉我“java.io.IOException:toDerInputStream 拒绝标签类型 77”。 然后我在powershell中执行此操作,它可以工作。

$fileContentBytes = get-content "the file you read from web"
$a= [System.Convert]::FromBase64String($fileContentBytes)
[IO.File]::WriteAllBytes(‘xxx.pfx’, $a)

【讨论】:

【参考方案2】:

看起来您可能正在尝试使用 .cer 证书,但它应该是 .pfx 或其他不同于 .cer 的格式。 检查您正在使用的 KeyStore 或您的证书格式。

String strFile = "certificate.cer"; // << ((( should be .pfx )))
File file = new File(strFile);

byte[] certificateBytes = FileUtils.readFileToByteArray(file);
String password = "MyPassword123";


KeyStore keyStore = KeyStore.getInstance("PKCS12"); // << KeyStore used for .pfx

try (ByteArrayInputStream bs = new ByteArrayInputStream(certificateBytes)) 
    keyStore.load(bs, password.toCharArray());
 catch (NoSuchAlgorithmException | CertificateException e) 
  e.printStackTrace();
 

【讨论】:

以上是关于java.io.IOException: toDerInputStream 拒绝标签类型 77的主要内容,如果未能解决你的问题,请参考以下文章

java.io.IOException: toDerInputStream 拒绝标签类型 77

java.io.IOException:系统找不到指定的路径

java.io.IOException: Connection reset by peer和java.io.IOException: Connection timed out。Socket

android java.io.IOException:传输端点未连接

任务 ':app:compileDebugKotlin' java.io.IOException 执行失败

火花:java.io.IOException:设备上没有剩余空间[再次!]