有谁知道,我如何在.NET中实现TLS-ALPN?
我已经实现了一个基本的HTTP/2服务器,但没有TLS加密.我在谷歌搜索,但我只找到了C,Java或其他语言的资源,但没有找到.NET(C#)的资源
我正在使用jetty-alpn-agent来向项目添加ALPN支持,但我能找到的是关于如何从.m2文件夹运行它的说明,这使我需要部署两个jar:s而不是仅部署一个uber-jar,从而减少了便携式的。
是否可以在jar中指定-javaagent开关的位置?
我正在寻找类似的东西java -javaagent:my.jar!/javaagents/jetty-alpn-agent-2.0.0.jar -jar myjar.jar,但这似乎不起作用。
有没有人将spring-webflux与netty(http / 2)一起使用?
Spring文档说:
您可以使用
server.http2.enabled配置属性在Spring Boot应用程序中启用HTTP / 2支持。该支持取决于所选的Web服务器和应用程序环境,因为JDK8不立即支持该协议。Spring Boot不支持HTTP / 2协议的明文版本h2c。因此,您必须先配置SSL。
该标志server.http2.enabled对我不起作用。
我正在使用:
请看一下我的配置:
HTTPS也可以正常工作。但是协议仍然相同(http / 1.1)
这是ALPN的问题吗?我应该将我的应用程序升级到JDK10吗?我将不胜感激任何建议。谢谢。
Trying to get Apple push notifications to work with my Spring Boot project.
I'm using this apns-http2 for sending push notification. From their GitGub page:
Note: Ensure that you have Jetty's ALPN JAR (OkHttp requires it) in your boot classpath. See here for more information. This is required until Java 9 is released, as Java 8 does not have native support for HTTP/2.
So I added the vm option
Xbootclasspath/p:/Users/sarath/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/8.1.9.v20160720//alpn-boot-8.1.9.v20160720.jar
Run Code Online (Sandbox Code Playgroud)
in Intellij run configuration and everything works. I'm getting the …
阅读完 HTTP/2 RFC (#7540)和 TLS-ALPN RFC (#7301)后,我仍然无法弄清楚当一端缺少 ALPN 时的预期行为。
假设我有一个使用 HTTP/2“h2”(通过 TLS)的客户端,该客户端与支持 HTTP/2 的服务器通信,但不在“服务器问候”中发送 ALPN 扩展。客户的预期行为是什么?
到目前为止,我见过的大多数客户端都认为服务器不支持 HTTP/2,并将连接降级到 http/1.1,但很少有人忽略(go-gRPC)继续使用 HTTP/2。
如果使用在客户端(“h2”)和服务器(“h2c”)之间执行 SSL 终止的 AWS classic LB,则此场景可能会更加实用。在此示例中,客户端发送值为“h2”的 ALPN 扩展,LB 在没有 ALPN 的情况下执行 SSL 握手(正如其部分所预期的那样),最终 JAVA gRPC 由于 HTTP/1.1 降级而失败。
我有一个用 Java/Kotlin 制作的桌面应用程序,具有 Firebase(特别是 Firestore 实时)连接。
它在我的笔记本电脑(通过 Parallels 的 Windows)和其他一些经过测试的 Windows 中运行正常。但是,在某些电脑上我总是遇到错误:
com.google.cloud.firestore.FirestoreException: java.lang.IllegalStateException: Could not find TLS ALPN provider; no working netty tcnative, Conscrypt, or Jetty NPN/ALPN available。
我尝试了一些 jar 的创建变体,但没有任何帮助。
这是我当前的 build.gradle 连接:
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.3.21'
}
jar {
manifest {
attributes 'Main-Class': 'main.LoginActivity'
}
}
// java -cp Y:\Desktop\nwebprint\out\artifacts\nwebprint_main_jar\nwebprint.main.jar main.LoginActivity
group 'nwebprint'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
version = '1.0'
sourceCompatibility = 1.7
targetCompatibility = 1.7
//create …Run Code Online (Sandbox Code Playgroud) 在我的网络服务器上,我试图让H2(http2)工作.通过"ondrej"存储库安装Apache 2.4.20.我在Debian 8和Ubuntu 14.04服务器上测试过,但是我一直遇到同样的问题.我有OpenSSL 1.0.2和SSL vhosts运行.
奇怪的是发送升级头(连接:升级和升级:h2).当我做一些外部服务器测试时,我得到了响应,即在ALPN支持下h2正常运行.但问题是我测试的浏览器(Win7上的Chrome和FireFox)不会升级到H2.
我注意到缺少的一件事是HTTP2-Settings标头,但我在任何Apache文档中都找不到任何实现此功能或强制Apache发送此标头的内容.
遗憾的是我无法使用cUrl进行测试,因为我可以访问的服务器不支持任何具有http2支持的版本.
我的SSL vhost设置:
Protocols h2 http/1.1
SSLEngine On
SSLCACertificateFile xxxxxxxx
SSLProtocol all -SSLv2 -SSLv3
SSLCompression Off
SSLHonorCipherOrder On
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RSA+AES RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4 !AES128"
Header always set Strict-Transport-Security "max-age=15552000;includeSubDomains"
SSLCertificateFile xxxxxxxx
SSLCertificateKeyFile xxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我正在使用prefork模块运行Apache而不是使用worker.
谁能告诉我什么是错的?