当前位置: 首页 > 知识库问答 >
问题:

Grpc Java:在服务器上设置SSLContext

江鸿羲
2023-03-14

现在我有了server.cert和pkcs8_key.pem文件,我就这样创建了服务器

InputStream certChain = MyServer.class.getResourceAsStream("/server.crt");
        InputStream privateKey = MyServer.class.getResourceAsStream("/pkcs8_key.pem");
        SslContext sslContext = GrpcSslContexts.forServer(certChain, privateKey, "password").build();


        Server server = NettyServerBuilder.forPort(8080)
                            .sslContext(sslContext)
                            .addService(new ChatService())
                            .addService(new HelloWorldService())
                            .useTransportSecurity(certChain, privateKey)
                            .build();

类路径配置正确。

我得到的错误堆栈:

Exception in thread "main" java.lang.IllegalArgumentException: Input stream does not contain valid private key.
    at io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder.keyManager(SslContextBuilder.java:296)
    at io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder.forServer(SslContextBuilder.java:104)
    at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.forServer(GrpcSslContexts.java:162)
    at server.MyServer.main(MyServer.java:20)
Caused by: java.io.IOException: overrun, bytes = 2353
    at javax.crypto.EncryptedPrivateKeyInfo.<init>(EncryptedPrivateKeyInfo.java:92)
    at io.grpc.netty.shaded.io.netty.handler.ssl.SslContext.generateKeySpec(SslContext.java:978)
    at io.grpc.netty.shaded.io.netty.handler.ssl.SslContext.getPrivateKeyFromByteBuffer(SslContext.java:1034)
    at io.grpc.netty.shaded.io.netty.handler.ssl.SslContext.toPrivateKey(SslContext.java:1024)
    at io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder.keyManager(SslContextBuilder.java:294)
    ... 3 more

共有1个答案

郭兴文
2023-03-14
SslContext sslContext = GrpcSslContexts
    .forServer(certChain, privateKey, "password").build();
SslContext sslContext = GrpcSslContexts
    .forServer(certChain, privateKey).build();
 类似资料:
  • 我试图下载库从nexus仓库和它falied下载,与下一个错误:"不能解决org. 这是pom。我写的xml- 这是设置。我写的xml- 谁能帮帮我,告诉我哪里做错了?

  • 我正在使用一个AmazonUbuntuEC2实例,它只有一个命令行界面。我想为该服务器设置UI,以便使用远程桌面工具进行访问。有没有办法将GUI应用于EC2实例?

  • 我试图在eclipse中设置jboss应用服务器,但我面临一些问题。我只在Eclipse中安装了jboss工具。因此,我的问题的第一部分是,jboss工具本身是否足以设置服务器,或者我需要额外的安装。

  • 我正在使用spring Boot编写rest API。我正在努力维护redis服务器上的用户会话。Redis在默认端口上启动并运行。我已经使用lettuce jar连接到redis服务器。但是好像我的会话没有在redis服务器上设置。我尝试使用uuid设置会话对象,它返回如下所示 从redis cli,我能够设置和获得关键值。 这是一个代码片段,我试图查看用户是否已经登录,取决于他们的活动会话,如

  • Debug 字段 该设置默认值是 false,当发生错误时,只返回错误信息本身。 当该字段设置为 true 时,当发生 panic 时,会将整个 panic 的错误堆栈信息返回给客户端,在用户进行 hprose 服务开发时,该设置可以帮助你快速定位错误位置。 ErrorDelay 字段 该设置为整型值,默认值为 10 秒。 该字段表示在调用执行时,如果发生异常,将延时一段时间后再返回给客户端。 在

  • 问题内容: 我正在尝试从本地网络服务器访问Active Directory。为此,我使用了最新版本的xampp和一个名为adLDAP的PHP脚本。如果我理解正确,则需要启用SSL才能访问https URL。我试着用谷歌搜索它,但是没有运气:(任何人都可以链接教程或向我解释如何在xampp / apache上为Windows 7 64bit安装SSL吗? 问题答案: Apache部分-使您能够打开h