在 java 8 中设置安全提供程序我只需要将提供程序添加到 java.security 文件并将提供程序外部库添加到 lib/ext。由于在其他版本中不允许使用外部库,如何在 jdk11 上添加提供程序?
到目前为止,我尝试将提供程序添加到 conf/security 文件夹中的 java.security 文件中。
security.provider.1=nCipherKM
Run Code Online (Sandbox Code Playgroud)
我在列表顶部插入了新的提供程序,但是当我尝试 .getInstance("providerExample") 时,我仍然收到 NoSuchProviderException。
java.security.NoSuchProvidIrException: no such provider: nCipherKM
Run Code Online (Sandbox Code Playgroud)
lib jar 本身,我不知道我必须把它放在哪里,或者我怎样才能包括它才能被识别。如果我创建一个 lib/ext 文件夹,他说要使用 -classpath ,但对此也一无所知。
谢谢
编辑:为了完成我的问题,我忘了提到我使用 thorntail 和 maven 3.6.1 来构建项目。我得到的错误与这一行有关:
KeyStore.getInstance("ncipher.sworld", "nCipherKM");
Run Code Online (Sandbox Code Playgroud)
正如我之前所说,当我有 java 8 时,我只需要将 security.provider 添加到 java.security 并将 nCipherKM.jar 添加到 $JAVA_HOME/lib/ext 文件夹。
我正在使用 JDK 11 附带的新 HttpClient 发出许多请求(向 Github 的 API,但我认为这无关紧要),尤其是 GET。
对于每个请求,我构建并使用一个 HttpClient,如下所示:
final ExecutorService executor = Executors.newSingleThreadExecutor();
final HttpClient client = client = HttpClient
.newBuilder()
.followRedirects(HttpClient.Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(10))
.executor(executor)
.build();
try {
//send request and return parsed response;
} finally {
//manually close the specified executor because HttpClient doesn't implement Closeable,
//so I'm not sure when it will release resources.
executor.shutdownNow();
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,除了时不时地,我收到以下异常,并且请求将不再有效,直到我重新启动应用程序:
Caused by: java.net.ConnectException: Cannot assign requested address
...
Caused by: java.net.BindException: Cannot assign requested address
at java.base/sun.nio.ch.Net.connect0(Native Method) …
Run Code Online (Sandbox Code Playgroud) 故事:
我使用 JDK8 和 IVY 作为 ANT Builder 的依赖管理器。一切都很好。我的DocumentBuilderFactory
班级能够找到javax.xml.parsers
依赖关系。
问题:
现在我转移到 Open JDK11,现在DocumentBuilderFactory
无法找到javax.xml.parsers
依赖项。
Eclipse 给了我导入建议,但是当我导入时没有任何反应,并且导入已经表示导入 javax.xml.parsers.DocumentBuilder 无法
像这样解析:
我需要什么解决方案:
我需要 Open JDK 11 的 IVY 依赖项来 javax.xml.parsers
支持DocumentBuilderFactory
应用程序.yml
server:
port: 8082
spring:
security:
oauth2:
client:
registration:
custom-client:
client-id: R2dpxQ3vPrtfgF72
client-secret: fDw7Mpkk5czHNuSRtmhGmAGL42CaxQB9
client-name: Auth Server
scope: user_info
provider: custom-provider
redirect-uri-template: http://localhost:8082/login/oauth2/code/
client-authentication-method: basic
authorization-grant-type: authorization_code
provider:
custom-provider:
token-uri: http://localhost:8081/auth/oauth/token
authorization-uri: http://localhost:8081/auth/oauth/authorize
user-info-uri: http://localhost:8081/auth/user/me
user-name-attribute: name
Run Code Online (Sandbox Code Playgroud)
WebSecurityConfigurerAdapter 的扩展
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**") //
.authorizeRequests()//
.antMatchers("/", "/login**")//
.permitAll() //
.anyRequest() //
.authenticated() //
.and() //
.oauth2Login();
}
}
Run Code Online (Sandbox Code Playgroud)
依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId> …
Run Code Online (Sandbox Code Playgroud) 我已经下载了 jaxb-ri:
\n$ tree -L 1\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 License.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mod\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 samples\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ThirdPartyLicenseReadme.txt\n
Run Code Online (Sandbox Code Playgroud)\n我的java版本是:
\n$ java -version\nopenjdk version "11.0.7" 2020-04-14\n
Run Code Online (Sandbox Code Playgroud)\n然而,当我尝试执行时xjc.sh -help
,我收到此错误消息:
Java major version: 11\njava.lang.module.FindException: Module java.activation not found, required by com.sun.istack.runtime\n at java.base/java.lang.module.Resolver.findFail(Resolver.java:877)\n at java.base/java.lang.module.Resolver.resolve(Resolver.java:191)\n at java.base/java.lang.module.Resolver.resolve(Resolver.java:140)\n at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:315)\n at java.base/java.lang.module.ModuleDescriptor$1.resolveAndBind(ModuleDescriptor.java:2693)\n at java.base/jdk.internal.module.ModuleBootstrap.boot(ModuleBootstrap.java:354)\n at java.base/java.lang.ClassLoader.initializeClassLoaders(ClassLoader.java:211)\n at java.base/java.lang.Thread.initialize(Thread.java:430)\n at java.base/java.lang.Thread.<init>(Thread.java:155)\n
Run Code Online (Sandbox Code Playgroud)\n 我有一个Dockerfile
由许多服务使用的基础,如下所示:
FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim
Run Code Online (Sandbox Code Playgroud)
Linux Alpine有一些安全修复程序,我想将它们包含在我的基础映像中。在AdoptOpenJDK 的官方页面上寻找新图像时,我发现这些标签自 2021 年 8 月 1 日起已被弃用,取而代之的是Eclipse Temurin项目。
Eclipse Temurin 没有基于 alpine 的 jdk11 镜像。难道我...
参考:
我正在 JDK11 环境中运行 JDK8 应用程序。我正在使用 TLSv1.2 和 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 密码套件算法,我怀疑它在 JDK11 中不受支持或禁用。有 jvm 支持的密码列表,请参阅https://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html 另外,如果您在这里看到有人列出了支持的密码jdk 至 jdk1.8 https://developer.ibm.com/answers/questions/301898/where-i-can-find-list-of-cipher-suites-that-suppor/
但我想知道jdk11中支持/启用/禁用哪种密码套件算法。我正在使用 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 密码算法,但是当我尝试在 jdk 11 运行时环境中运行我的应用程序时,我收到 SSLHandshakeException(Getting javax.net.ssl.SSLHandshakeException in JDK11)。这就是为什么我试图改变我的密码套件算法,并且同样我想知道我可以在 JDK11 环境中使用哪种算法。如果我也了解 jdk11 和 jdk8 都支持的密码,那将会很有帮助。请帮我解决一下。
谢谢。
我正在使用 Spring Boot 2.2.5 并通过 Spring Boot Actuator 和 Grafana 监控我的应用程序指标。
我的应用程序是用Docker(OpenJdk11)打包的,并配置了4GB内存
我的 gc 暂停时间很长,大约需要 1-2 秒,并且它与高jvm.gc.memory.allocated相关。
jvm.gc.memory.allocated 指标有时会达到30GB
谁能解释jvm.gc.memory.alulated指标?这是什么意思 ?
garbage-collection memory-management spring-boot spring-boot-actuator openjdk-11
我们正在 AWS 中运行基于 openjdk:11-slim 的 docker 容器。我们通常使用两种实例类型。一个有 1G,另一个有 2G 可用内存。在 1G 实例上,我开始使用这些参数来限制堆大小:
-XX:MaxRAM=1g -XX:MaxRAMPercentage=30
我也想限制非堆。它是一个 Spring Boot 应用程序,在 Spring Boot Admin 中它当前看起来像这样(默认运行):
正如您所看到的,1.33 GB Max 甚至无法工作,因为总内存只有 1G。理想情况下,非堆也应限制在 30% 以内。我可以使用哪些 JVM 参数来调整非堆内存的大小?
我进行了一些调查,在这个实例中,大约 1G 总 RAM 的 30% 已用于非应用程序相关进程(第三列是总内存的百分比)。
3663 root 4.6 /usr/bin/python2.7 /usr/bin/aws logs push --config-file /etc/awslogs/awslogs.conf --additional-configs-dir /etc/awslogs/config
3430 root 4.1 /usr/bin/dockerd --storage-driver devicemapper --storage-opt dm.thinpooldev=/dev/mapper/docker-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true --storage-opt dm.fs=ext4 --storage-opt dm.basesize=100G
2949 healthd 3.5 puma 2.11.1 (tcp://127.0.0.1:22221) [healthd]
3021 root 2.6 /usr/bin/python2.7 /opt/aws/bin/cfn-hup
3437 root 2.2 …
Run Code Online (Sandbox Code Playgroud) 关注这篇文章之后:
\n\n\nopenjdk 11 原生支持 jfr
\n
OpenJDK 11 的功能列表也证实了这一点:
\n\n\n328:飞行记录器
\n
然而,从这篇 DZone 文章中,关于使用 JFR 链接选项-XX:+UnlockCommercialFeatures
:
\n\nOpenJDK 无法识别此选项\xe2\x80\x99
\n
当我尝试找前任时。与摇篮:./gradlew clean -Dorg.gradle.jvmargs="-XX:+UnlockCommercialFeatures"
我明白了
\n\n进程命令行:C:\\Program\nFiles\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot\\bin\\java.exe\n-XX:+UnlockCommercialFeatures (...)
\n无法识别的 VM 选项“UnlockCommercialFeatures”
\n
我在这里缺少什么?
\nopenjdk-11 ×10
java ×5
java-11 ×4
spring-boot ×2
alpine-linux ×1
docker ×1
eclipse ×1
encryption ×1
http ×1
ivy ×1
java-platform-module-system ×1
jaxb ×1
jfr ×1
jvm ×1
oauth-2.0 ×1
rc4-cipher ×1
tls1.2 ×1