- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用带有 sqlline 的 OpenJDK 8 连接到 MariaDB (10.5.6-MariaDB-log) 数据库。连接应使用 ssl。
数据库中的用户是这样创建的:
GRANT ALL PRIVILEGES ON *.* TO `user`@`client` IDENTIFIED BY PASSWORD '*' REQUIRE SSL
Java/操作系统版本:
> java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
> cat /etc/system-release
CentOS Linux release 8.3.2011
加密策略设置为无限制:
crypto.policy=unlimited
这是我正在使用的 sqlline 命令:
java -Djavax.net.debug=all -Djava.ext.dirs=./ sqlline.SqlLine -u 'jdbc:mysql://database:3306/?useSSL=true&trustStore=/etc/ssl/certs/truststore.jks&trustStorePassword=XXXX&enabledSslProtocolSuites=TLSv1,TLSv1.1,TLSv1.2'
运行此命令时,我得到:
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.191 CET|Logger.java:765|System property jdk.tls.client.cipherSuites is set to 'TLSv1.2'
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.200 CET|Logger.java:765|Transformation RC4 is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.201 CET|Logger.java:765|Transformation DES/CBC/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.201 CET|Logger.java:765|Transformation RC4 is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.202 CET|Logger.java:765|Transformation DES/CBC/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.206 CET|Logger.java:765|Transformation DESede/CBC/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.207 CET|Logger.java:765|Transformation AES/CBC/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.207 CET|Logger.java:765|Transformation AES/CBC/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.208 CET|Logger.java:765|Transformation AES/GCM/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.209 CET|Logger.java:765|Transformation AES/GCM/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.210 CET|Logger.java:765|Transformation AES/GCM/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.210 CET|Logger.java:765|Transformation AES/GCM/NoPadding is not available.
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.210 CET|Logger.java:765|jdk.tls.keyLimits: entry = AES/GCM/NoPadding KeyUpdate 2^37. AES/GCM/NOPADDING:KEYUPDATE = 137438953472
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.215 CET|Logger.java:765|The current installed providers do not support cipher suite: TLSv1.2
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.215 CET|Logger.java:765|System property jdk.tls.server.cipherSuites is set to 'null'
javax.net.ssl|FINE|01|main|2021-03-24 09:22:09.217 CET|Logger.java:765|Ignore disabled cipher suite: SSL_RSA_WITH_NULL_MD5
javax.net.ssl|ALL|01|main|2021-03-24 09:22:09.218 CET|Logger.java:765|Ignore unsupported cipher suite: SSL_RSA_WITH_NULL_MD5
javax.net.ssl|ALL|01|main|2021-03-24 09:22:09.219 CET|Logger.java:765|trigger seeding of SecureRandom
javax.net.ssl|ALL|01|main|2021-03-24 09:22:09.220 CET|Logger.java:765|done seeding of SecureRandom
javax.net.ssl|SEVERE|01|main|2021-03-24 09:22:09.234 CET|Logger.java:765|Fatal (HANDSHAKE_FAILURE): Couldn't kickstart handshaking (
"throwable" : {
javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
at sun.security.ssl.ClientHello$ClientHelloKickstartProducer.produce(ClientHello.java:549)
at sun.security.ssl.SSLHandshake.kickstart(SSLHandshake.java:500)
at sun.security.ssl.ClientHandshakeContext.kickstart(ClientHandshakeContext.java:107)
at sun.security.ssl.TransportContext.kickstart(TransportContext.java:231)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:387)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:740)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:451)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1103)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:502)
at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:155)
at org.mariadb.jdbc.Driver.connect(Driver.java:86)
at sqlline.DatabaseConnection.connect(DatabaseConnection.java:135)
at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:192)
at sqlline.Commands.connect(Commands.java:1364)
at sqlline.Commands.connect(Commands.java:1244)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:38)
at sqlline.SqlLine.dispatch(SqlLine.java:730)
at sqlline.SqlLine.initArgs(SqlLine.java:410)
at sqlline.SqlLine.begin(SqlLine.java:515)
at sqlline.SqlLine.start(SqlLine.java:267)
at sqlline.SqlLine.main(SqlLine.java:206)}
)
使用 Oracle Java 8 时,同样的命令有效:
java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
%% No cached client session
*** ClientHello, TLSv1.2
RandomCookie: GMT: 1616509341 bytes = { 110, 230, 172, 110, 8, 97, 81, 50, 49, 52, 8, 49, 117, 225, 175, 97, 163, 91, 97, 1, 194, 134, 50, 185, 109, 189, 164, 80 }
Session ID: {}
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_
DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA
256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_W
ITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENE
GOTIATION_INFO_SCSV]
Compression Methods: { 0 }
Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1, sect283k1, sect283r1, sect409k1, sect409r1, sect571k1, sect571r1, secp256k1}
Extension ec_point_formats, formats: [uncompressed]
Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA256withDSA, SHA224withECDSA, SHA224withRSA, SHA224withDSA,
SHA1withECDSA, SHA1withRSA, SHA1withDSA
***
...
*** ServerHello, TLSv1.2
RandomCookie: GMT: -1794964180 bytes = { 176, 47, 147, 184, 217, 206, 200, 236, 157, 146, 209, 78, 28, 189, 35, 107, 146, 17, 52, 81, 68, 79, 87, 78, 71, 82, 68, 1 }
Session ID: {98, 210, 199, 183, 45, 73, 255, 93, 111, 94, 126, 165, 197, 169, 155, 2, 122, 174, 246, 46, 27, 105, 119, 4, 43, 40, 198, 7, 148, 111, 62, 106}
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Compression Method: 0
Extension renegotiation_info, renegotiated_connection: <empty>
Extension ec_point_formats, formats: [uncompressed, ansiX962_compressed_prime, ansiX962_compressed_char2]
***
%% Initialized: [Session-1, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
** TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
[read] MD5 and SHA1 hashes: len = 89
...
*** CertificateRequest
Cert Types: RSA, ECDSA
Supported Signature Algorithms: SHA256withECDSA, SHA384withECDSA, SHA512withECDSA, Unknown (hash:0x8, signature:0x7), Unknown (hash:0x8, signature:0x8), Unknown (hash:0x8, signature:0x9), Unknown (hash:0x8, sign
ature:0x4), Unknown (hash:0x8, signature:0xa), Unknown (hash:0x8, signature:0x5), Unknown (hash:0x8, signature:0xb), Unknown (hash:0x8, signature:0x6), SHA256withRSA, SHA384withRSA, SHA512withRSA, SHA224withECDS
A, SHA224withRSA, SHA1withECDSA, SHA1withRSA
Cert Authorities:
<Empty>
[read] MD5 and SHA1 hashes: len = 47
0000: 0D 00 00 2B 02 01 40 00 24 04 03 05 03 06 03 08 ...+..@.$.......
0010: 07 08 08 08 09 08 04 08 0A 08 05 08 0B 08 06 04 ................
0020: 01 05 01 06 01 03 03 03 01 02 03 02 01 00 00 ...............
[Raw read]: length = 5
0000: 16 03 03 00 04 .....
[Raw read]: length = 4
0000: 0E 00 00 00 ....
main, READ: TLSv1.2 Handshake, length = 4
*** ServerHelloDone
[read] MD5 and SHA1 hashes: len = 4
0000: 0E 00 00 00 ....
Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
***
*** ECDHClientKeyExchange
我错过了什么?为什么它不适用于 OpenJDK?
最佳答案
事实证明,解决方案相当简单。向 java 命令添加另一个扩展目录时,连接有效:
java -Djavax.net.debug=all -Djava.ext.dirs=./:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64/jre/lib/ext sqlline.SqlLine -u 'jdbc:mysql://database:3306/?useSSL=true&trustStore=/etc/ssl/certs/truststore.jks&trustStorePassword=XXXX&enabledSslProtocolSuites=TLSv1,TLSv1.1,TLSv1.2'
但是,我不确定为什么会这样。我想附加密码套件所需的库是以下之一:
-rw-r--r--. 1 root root 5174426 24. Mär 11:49 bcprov.jar
-rw-r--r--. 1 root root 4004256 4. Jan 17:36 cldrdata.jar
-rw-r--r--. 1 root root 9441 4. Jan 17:36 dnsns.jar
-rw-r--r--. 1 root root 48729 4. Jan 17:36 jaccess.jar
-rw-r--r--. 1 root root 1208417 4. Jan 17:36 localedata.jar
-rw-r--r--. 1 root root 617 4. Jan 17:36 meta-index
-rw-r--r--. 1 root root 2033825 4. Jan 17:36 nashorn.jar
-rw-r--r--. 1 root root 51889 4. Jan 17:36 sunec.jar
-rw-r--r--. 1 root root 306494 4. Jan 17:36 sunjce_provider.jar
-rw-r--r--. 1 root root 307326 4. Jan 17:36 sunpkcs11.jar
-rw-r--r--. 1 root root 78815 4. Jan 17:36 zipfs.jar
关于java - 使用 OpenJDK 8 时为 "No negotiable cipher suite",但在使用 Oracle Java 8 时不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66777539/
Oracle 即时客户端和 Oracle 客户端有什么区别?你能给我解释一下吗?谢谢 最佳答案 Oracle 客户端带有安装程序和许多可执行文件,例如 sqlplus,tnsping,它是完整而庞大的
我正在寻找一个Delphi组件来直接连接到ORACLE数据库服务器,而无需安装oracle客户端。 我知道Oracle Data Access (ODAC)来自DevArt 。还有其他组件具有此功能吗
如何编写 Oracle 存储过程,以表 (X) 作为输入参数,并在过程内部使用表 X 来与另一个表 Y 联接? 表 X 将包含数千条记录。 不希望将表名作为 varchar 传递,然后使用动态 SQL
如何编写 Oracle 存储过程,以表 (X) 作为输入参数,并在过程内部使用表 X 来与另一个表 Y 联接? 表 X 将包含数千条记录。 不希望将表名作为 varchar 传递,然后使用动态 SQL
我要过滤COMMENTS属性为空的记录 我试过了 SELECT TABLE_NAME, COMMENTS FROM (SELECT TABLE_NAME, COMMENTS FROM (sel
我要下载 Oracle Instant Client for Linux x86-64 (64-bit)现在有一段时间了。 现在我注意到该网站在过去几个月中一直遇到技术问题。 要从 Oracle 下载
有什么方法可以将我的 Delphi 应用程序 (FireDac) 直接连接到 Oracle 数据库? 目前可以连接,但需要安装Oracle Client 在 embarcadero 站点 ( http
我有一张表,其中日期列的数据格式如下:“7/25/2014 12:14:27 AM”。我需要通过放入 where 子句来获取此日期。有人可以建议我该怎么做吗? 最佳答案 日期(存储在表中)是 repr
如果两个事务试图同时修改同一行会发生什么?通常,一旦行被修改,另一个事务等待直到第一个事务执行提交或回滚。但是,如果他们恰好在同一时刻发送更新请求怎么办? 最佳答案 答案是否定的。两个事务不能同时修改
我想知道为什么我不能在 Oracle 模式中有两个同名的索引?它抛出一个错误,指出该名称已被使用。我的印象是,由于索引在一个特定的表上,这应该不会导致任何错误,除非我们对同一个表上的两个不同列使用相同
我需要构建一个查询来按成员和到期日期检索信息组,但我需要为每个成员提供一个序列号.. 例如: 如果成员“A”有 3 条记录要过期,“B”只有 1 条,“C”有 2 条,我需要这样的结果: Number
独立程序 create procedure proc1 ( begin end; ) 存储过程 create package pkg1 ( procedure proc2 begin end; ) 最
在 Oracle 9i 中声明 FK 时遇到问题。我在这里查看了许多关于 SO 和一些在线文档(例如 http://www.techonthenet.com/oracle/foreign_keys/f
我和我的同事维护的应用程序在后端有一个 Oracle 数据库。我们正在考虑偶尔以“受限”模式运行应用程序,其中一个数据库表空间设置为只读。我们可以轻松地将必要的表和索引移动到单独的表空间,这些表空间将
我想实现一个自定义的回归聚合函数,类似于现有的 REGR_SLOPE . 我要定义的函数需要获取两列作为参数,例如 select T.EMPLOYEE_ID, CUSTOM_REGR_SL
我已经尝试解决这个问题一段时间了,我认为是时候寻求帮助了。我正在构建一个架构配置脚本,我想添加一些脚本输出和错误处理。这个想法是脚本输出窗口只会向我显示关键消息而没有所有噪音。 Create Temp
在旧的 Oracle 服务器(我被告知是 8i)上使用 JDBC 时,我遇到了一个非常令人困惑和奇怪的问题。我在那里准备了一个表,其中包含大约 10 列、数字、varchars、一个 raw(255)
我有一张 table Customer_Chronics在 Oracle 11g 中。 该表具有三个关键列,如下所示: 分支代码 客户 ID 期 我已按 branch_code 列表按表分区,现在我进
是否有存储用户自定义异常的oracle表? 最佳答案 没有。 与其他变量一样,用户定义的异常在 PL/SQL block 中定义,并且具有 PL/SQL 变量将具有的任何范围。所以,例如 DECLAR
在 oracle 中使用序列并使用 Before insert trigger 自动递增列或使用标识列是否更好,因为它在 Oracle 12 c 中可用? 最佳答案 无论哪种方式,您都将使用序列。 1
我是一名优秀的程序员,十分优秀!