首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GRPC - .IllegalArgumentException: Jetty /NPN没有正确配置

GRPC - .IllegalArgumentException: Jetty /NPN没有正确配置
EN

Stack Overflow用户
提问于 2017-05-15 18:22:55
回答 2查看 4.1K关注 0票数 5

我正试图在港口容器中启用TLS,但在服务器启动过程中出现以下错误,我试图将GRPC服务器旋开。

我在试着指https://github.com/grpc/grpc-java/blob/master/SECURITY.md#transport-security-tls

Java : jdk1.8.0_131 OpenSSL版本: OpenSSL 1.0.1e-fips

例外:

代码语言:javascript
复制
*Exception in thread "main" java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
        at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
        at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
        at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
        at io.grpc.netty.GrpcSslContexts.forServer(GrpcSslContexts.java:119)
        at io.grpc.netty.NettyServerBuilder.useTransportSecurity(NettyServerBuilder.java:377)
        at io.grpc.netty.NettyServerBuilder.useTransportSecurity(NettyServerBuilder.java:63)*

还想知道如何在本地测试openssl方法?

这就是我如何运行jar: java -jar -Denv=e1 app.jar

下面是我的POM中与GRPC -I特定的附加GRPC相关的POM依赖关系:--扩展

代码语言:javascript
复制
   <extensions>
        <extension>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.4.0.Final</version>
        </extension>
    </extensions>

--插件

代码语言:javascript
复制
<plugin>
       <groupId>org.xolstice.maven.plugins</groupId>
       <artifactId>protobuf-maven-plugin</artifactId>
       <version>0.5.0</version>
       <configuration>
      <protocArtifact>com.google.protobuf:protoc:3.2.0:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.3.0:exe:${os.detected.classifier}</pluginArtifact>
      </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

--依赖

代码语言:javascript
复制
<dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty</artifactId>
            <version>1.3.0</version>
</dependency>
<dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>1.3.0</version>
</dependency>
<dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>1.3.0</version>
</dependency>
<dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-tcnative-boringssl-static</artifactId>
            <version>2.0.1.Final</version>
</dependency>

Openssl / jdk版本会成为问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-16 20:22:53

您需要添加对Netty TCNative的依赖,以获得正确的安全依赖。在用于SECURITY.md的gRPC文件中,您需要添加以下内容:

代码语言:javascript
复制
<project>
  <dependencies>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-tcnative-boringssl-static</artifactId>
      <version>1.1.33.Fork26</version>
    </dependency>
  </dependencies>
</project>

请注意,在即将发布的gRPC 1.4版本中,这将更改为指向netty-tcnative-parent-2.0.1.Final

票数 1
EN

Stack Overflow用户

发布于 2018-05-11 12:51:18

虽然这个问题已经得到了回答。直到今天,我还处于类似的情况,因为我无法启动jetty服务器(嵌入式)。

这个解决方案可能会帮助一些正在使用带有嵌入式jetty服务器的spring引导应用程序的人。

下面应该是pom.xml文件中的条目。

代码语言:javascript
复制
<dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-tcnative</artifactId>
        <version>2.0.6.Final</version>
        <classifier>${os.detected.classifier}</classifier>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-tcnative-boringssl-static</artifactId>
        <version>2.0.6.Final</version>
        <classifier>${os.detected.classifier}</classifier>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.mortbay.jetty.alpn</groupId>
        <artifactId>alpn-boot</artifactId>
        <version>8.1.11.v20170118</version>
    </dependency>
   <dependency>
        <groupId>org.eclipse.jetty.alpn</groupId>
        <artifactId>alpn-api</artifactId>
        <version>1.1.3.v20160715</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>

alpn-boot的版本应该依赖于您使用的JDK。请参阅以下检查版本的链接:http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-versions

完成后,如果使用STS启动spring引导应用程序,则重新构建项目并将以下条目添加到JVM参数中。

/p:%path_to_alpn_boot_jar%

然后启动服务器,它就能工作了。

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43986368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档