当前位置: 首页 > news >正文

网站建设推广seo游戏开发属于什么行业

网站建设推广seo,游戏开发属于什么行业,中油共享平台app,公司网站建设重要性GBase8a SSL 配置 GBase8a MPP Cluster 支持 SSL 标准协议#xff0c; SSL 协议是一种安全性更高的协议标准#xff0c; 它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证#xff0c;保证了通信双方更加安全的数据传输。 配置客户端使用 SSL 安全连接的方式连…GBase8a SSL 配置 GBase8a MPP Cluster 支持 SSL 标准协议 SSL 协议是一种安全性更高的协议标准 它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证保证了通信双方更加安全的数据传输。 配置客户端使用 SSL 安全连接的方式连接到 GBase8a MPP Cluster 数据库集群的配置总体流程如下 生成 SSL 连接证书 server 配置 client 配置 1. 生成 SSL 连接证书 在集群 server 端的系统中 根据需要选择生成 SSL 密钥的目录 下面以 GBase8a 的安装目录下的 ssl 目录保存相关文件为例进行配置说明。 1.1 在 server 上操作生成 server 端的密钥和证书 step1 # su - gbase $ mkdir -p /opt/gbase8a/ssl     # /opt/gbase8a 是我的GBase8a安装目录在安装目录下有权限创建 ssl 目录 $ cd /opt/gbase8a/ssl 后续的证书也秘钥生成过程中需要填写一些信息我除了 Country Name 填写 CNpassword 填写 123456 外其他都未填写直接回车了项目中可以根据实际情况填写。 step2 生成 ca-cert.pem 需要填写 Country Name 等信息 $ openssl req -sha1 -new -x509 -nodes -days 3650 -keyout ca-key.pem ca-cert.pem  You are about to be asked to enter information that will be incorporated into your certificate request. ...... Country Name (2 letter code) [XX]:CN State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your servers hostname) []: Email Address []: 执行完毕会生成两个文件ca-cert.pem 和 ca-key.pem step3 生成服务端密钥 同样填写一些信息 password 部分 A challenge password []: 建议填写复杂一些的密码 $ openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem server-req.pem  Generating a 2048 bit RSA private key ...... Country Name (2 letter code) [XX]:CN State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your servers hostname) []: Email Address []: Please enter the following extra attributes to be sent with your certificate request A challenge password []:123456 An optional company name []: 执行完毕会生成两个文件server-key.pem 和 server-req.pem step4 将 server-key.pem 导出为 RSA 类型 $ openssl rsa -in server-key.pem -out server-key.pem step5 生成服务端证书 server-cert.pem $ openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 server-cert.pem  ssl 证书相关查看命令 openssl rsa -in server-key.pem -text          #查看证书私钥文件中的私钥和公钥信息 openssl x509 -in server-cert.pem -noout -text #查看证书详细信息 1.2 在 server 上操作生成 client 端的密钥和证书 step1 在同一目录下 生成 client 端的密钥和证书 生成密钥 输入信息与 server 端相同。 $ openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem client-req.pem  Generating a 2048 bit RSA private key ...... Country Name (2 letter code) [XX]:CA State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your servers hostname) []: Email Address []: Please enter the following extra attributes to be sent with your certificate request A challenge password []:123456 An optional company name []: 会生成两个文件client-key.pem 和 client-req.pem step2 将 client-key.pem 导出为 RSA 类型 $ openssl rsa -in client-key.pem -out client-key.pem  step3 生成 client-cert.pem $ openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 client-cert.pem  前面所有过程总共生成的8个文件 ca-key.pemCA 私钥, 用于生成服务器端/客户端的数字证书 ca-cert.pemCA 证书用于生成服务器端/客户端的数字证书 server-key.pem服务器端的 RSA 私钥 server-req.pem服务器端的证书请求文件用于生成服务器端的数字证书 server-cert.pem服务器端的数字证书 client-key.pem客户端的 RSA 私钥 client-req.pem客户端的证书请求文件用于生成客户端的数字证书 client-cert.pem客户端的数字证书。 2. server 配置 step1 修改集群配置文件 gbase_8a_gcluster.cnf 在 [gbased] 里添加 ssl 信息。 以路径 /opt/gbase8a/ssl 为例 添加示例如下 $ vi $GCLUSTER_BASE/config/gbase_8a_gcluster.cnf [client] port5258 socket/tmp/gcluster_5258.sock connect_timeout43200 #default-character-setgbk default-character-setutf8 [gbased] basedir /opt/gcluster/server datadir /opt/gcluster/userdata/gcluster socket/tmp/gcluster_5258.sock pid-file /opt/gcluster/log/gcluster/gclusterd.pid #default-character-setgbk default-character-setutf8 # server cfg for ssl ssl-ca/opt/gbase8a/ssl/ca-cert.pem ssl-cert/opt/gbase8a/ssl/server-cert.pem ssl-key/opt/gbase8a/ssl/server-key.pem log-error port5258 core-file step2 重启集群查看配置是否成功 $ gcluster_services all restart step3 执行 gccli 登录集群 $ gccli -ugbase -p step4 查看 ssl 参数状态 配置成功则显示为“YES”。 gbase show variables like have_%ssl; ---------------------- | Variable_name | Value | ---------------------- | have_openssl  | YES   | | have_ssl      | YES   | ---------------------- 3. client 配置 集群 client 的配置直接在 client 端的 Linux 上配置。 step1 将 server 端生成的 ca-cert.pemclient-key.pemclient-cert.pem 文件拷贝到 client 端 修改 client 端的集群配置文件 gbase_8a_gcluster.cnf在 [client] 里添加 ssl 信息 以路径 /opt/gbase8a/ssl 为例 注意如果客户端是独立安装的 gccli 工具客户端则配置文件位于gccli 安装目标路径/config/gbase_8a_gcluster.cnf $ vi $GCLUSTER_BASE/config/gbase_8a_gcluster.cnf [client] port5258 socket/tmp/gcluster_5258.sock connect_timeout43200 #default-character-setgbk default-character-setutf8 # client cfg for ssl ssl-ca/opt/gbase8a/ssl/ca-cert.pem ssl-cert/opt/gbase8a/ssl/client-cert.pem ssl-key/opt/gbase8a/ssl/client-key.pem step2 通过 client 端远程访问 server 并执行 status 命令查看当前连接是否为 ssl 加密连接ssl 部分显示有 “Cipher in use”如果未走ssl则显示Not in use $ gccli -h192.168.1.162 -ugbase -p  gbase status 如果是单独创建的 gbasessl 用户则执行 $ gccli -h192.168.1.162 -ugbasessl -p -Dtestdb01 gbase status -------------- /home/frank/gccli/gcluster/server/bin/gbase ver 9.5.3.14.121230, for unknown-linux-gnu (x86_64) using readline 6.3 Connection id:          18 Current database:       testdb01 Current user:           gbasessl192.168.1.82 SSL:                    Cipher in use is DHE-RSA-AES256-SHA 说明当前连接时SSL加密连接 Current pager:          stdout ...... step3 如果 client 端没有进行上述 ssl 配置 则仍然会按默认方式非ssl连接 server。如果想要强制用户必须使用 ssl 连接则可以通过如下方式配置来强制指定的用户必须使用 ssl 连接 gbase grant all on testdb01.* to gbase require ssl gbase用于原来已经在使用了为了不影响原来的使用gbase用户连接方式在服务器端不做强制要求配置我直接单独创建一个新用户 gbasessl 来指定必须SSL连接grant ...... require ssl gbase create user gbasessl identified by 1q2w3e; gbase grant all on testdb01.* to gbasessl require ssl; gbase quit; $ gccli -h192.168.1.162 -ugbasessl -p -Dtestdb01 gbase status 查看用户是否备服务器配置为强制SSL连接可以通过查询系统表 gbase.user 来看 $ gccli -h192.168.1.162 -ugbase -p -Dtestdb01 gbase select user,ssl_type from gbase.user;  --------------------------- | user            | ssl_type | --------------------------- | root            |          | | gbase           |          | | gbasessl        | ANY      | --------------------------- 为空代表没有强制必须使用SSL连接不为空ANY | X509 | SPECIFIED都代表必须使用SSL连接。 ssl 连接参数 --skip-ssl客户端强制使用非SSL连接 --ssl客户端强制使用SSL连接 如果不加参数默认优先使用非SSL连接 gbasessl 账号连接测试创建用户时指定了 require ssl $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p --skip-ssl 客户端指定非SSL--skip-ssl我 gbasessl 服务器强制sslrequire ssl所以会连接失败 $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p  gbase status; 客户端不指定连接成功为SSL $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p --ssl gbase status; 客户端指定SSL--ssl连接成功为SSL gbase 账号连接测试默认未指定 require ssl gbase账号服务器没有设置强制ssl $ gccli -h192.168.1.162 -ugbase -Dtestdb01 -p --skip-ssl gbase status 客户端指定非SSL--skip-ssl连接成功为普通连接Not in use $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p  gbase status; 客户端不指定连接成功为SSL $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p --ssl gbase status; 客户端指定SSL--ssl连接成功为SSL。 1客户端指定 --ssl 但如果客户端配置未配置 ssl-cert、ssl-key 参数时也能连接成功为非SSL连接。 2ssl-ca非必须参数如果不校验CA证书的话不需要配置 如果 gccli 客户端配置文件gbase_8a_gcluster.cnf未配置对应参数也可以直接在 gccli 命令行指定 ssl 参数 $ gccli -h192.168.1.162 -ugbase -Dtestdb01 -p --ssl  --ssl-cert/opt/gbase8a/gccli/ssl/client-cert.pem  --ssl-key/opt/gbase8a/gccli/ssl/client-key.pem  $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p --ssl  --ssl-cert/opt/gbase8a/gccli/ssl/client-cert.pem  --ssl-key/opt/gbase8a/gccli/ssl/client-key.pem  如果要校验CA证书则指定 --ssl-ca CA证书文件路径非必须 $ gccli -h192.168.1.162 -ugbase -Dtestdb01 -p --ssl  --ssl-cert/opt/gbase8a/gccli/ssl/client-cert.pem  --ssl-key/opt/gbase8a/gccli/ssl/client-key.pem  --ssl-ca/opt/gbase8a/gccli/ssl/ca-cert.pem $ gccli -h192.168.1.162 -ugbasessl -Dtestdb01 -p --ssl  --ssl-cert/opt/gbase8a/gccli/ssl/client-cert.pem  --ssl-key/opt/gbase8a/gccli/ssl/client-key.pem  --ssl-ca/opt/gbase8a/gccli/ssl/ca-cert.pem jdbc 使用 ssl 加密连接传输数据 如果数据库的客户端应用client使用 jdbc 方式使用 ssl 加密连接方式则应用客户端的配置参考如下 如果使用 jdbc 进行 ssl 数据传输前提也是必须 server 支持 ssl必须先开启 server 端的 ssl 功能开启配置详情可参考上面的 《1. 生成 SSL 连接证书》和《2. server 配置》章节。 配置操作的命令集如下 因为前面我配置过了所以下面的1和2步骤我直接跳过直接从步骤3开始 1生成 ssl 文件直接在 linux 下执行即可 生成 server 证书 $ mkdir -p /opt/gbase8a/ssl $ cd /opt/gbase8a/ssl $ openssl genrsa 2048 ca-key.pem  # CA 私钥 $ openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem  # CA 证书。 注意CA私钥和CA证书生成的两步也可以合并成一步操作openssl req -sha1 -new -x509 -nodes -days 3650 -keyout ca-key.pem ca-cert.pem 来代替 $ openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem  # 服务器私钥 $ openssl rsa -in server-key.pem -out server-key.pem  # 转为 RSA 格式文件名也可以命名为server-key.rsa $ openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem  # 服务器证书 $ openssl verify -CAfile ca-cert.pem server-cert.pem  # 验证 生成 client 证书 $ openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -out client-req.pem  # 客户端私钥 $ openssl rsa -in client-key.pem -out client-key.pem  # 转为 RSA 格式文件名也可以命名为client-key.rsa $ openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem  # 客户端证书 $ openssl verify -CAfile ca-cert.pem client-cert.pem # 验证 ssl 证书相关查看命令 openssl rsa -in server-key.pem -text          #查看证书私钥文件中的私钥和公钥信息 openssl x509 -in server-cert.pem -noout -text #查看证书详细信息 2server 配置开启 ssl 功能 vi $GCLUSTER_BASE/config/gbase_8a_gcluster.cnf # 在 [gbased] 下配置 ssl 相关文件的路径 # server cfg for ssl ssl-ca/opt/gbase8a/ssl/ca-cert.pem ssl-cert/opt/gbase8a/ssl/server-cert.pem ssl-key/opt/gbase8a/ssl/server-key.pem 3server 集群服务重启 gcluster_services all restart 4查看服务器SSL配置 $ gccli -ugbase -p gbase show variables like %SSL%; 经过前面三步集群已经开启ssl功能针对jdbc按照如下使用步骤 1 生成jdbc连接用密钥根据 ca-cert.pem 生成 truststore # su - frank $ mkdir -p /home/frank/demo/ssl-certs/ $ cd /home/frank/demo/ssl-certs/ $ cp /home/frank/gccli/ssl/ca-cert.pem ./ $ cp /home/frank/gccli/ssl/client-cert.pem ./ $ keytool -import -alias GBaseCACert -file ca-cert.pem -keystore truststore 说明 ca-cert.pem 为服务器端生成 ssl 文件时生成的文件执行该步骤后会提示输入认证密码比如输入123456jdbc连接会用到 Trust this certificate? [no]:  yes  2把 gbase Client 证书转换成DER格式 $ openssl x509 -outform DER -in client-cert.pem -out client.cert 3根据 client.cert 文件生成客户端 keystore 文件 $ keytool -import -alias GBaseClientCertificate -file client.cert -keystore keystore  说明 client-cert.pem 为生成 ssl 文件时生成的文件执行该步骤后会提示输入认证密码比如输入123456jdbc连接会用到Trust this certificate? [no]:  yes  4上述步骤会生成两个文件 truststore keystore将这两个文件拷贝到 jdbc 可以访问的路径下例如/home/frank/demo/ssl-certs/我直接在该demo可访问的目录下生成的无需再拷贝了 5 参考下面方式编写连接测试代码参考官方的《GBase 8a 程序员手册JDBC篇.pdf》中的ssl jdbc连接的介绍编码测试 Main.java: public class Main {     public static void main(String args[]) {         String str dbconnector in ;         System.out.println(CommonUtil.getMethodName() str); System.out.println(CommonUtil.getMethodName() No SSL);         GBase8aClient.connectTest();         System.out.println(CommonUtil.getMethodName() SSL01);         GBase8aClient.connectTestSSL01();         System.out.println(CommonUtil.getMethodName() SSL02);         GBase8aClient.connectTestSSL02();         System.out.println(CommonUtil.getMethodName() SSL03);         GBase8aClient.connectTestSSL03();         System.out.println(CommonUtil.getMethodName() SSL04);         GBase8aClient.connectTestSSL04();     } } GBase8aClient.java public class GBase8aClient { public static void connectTest() {         // 不设置 useSSL requireSSL使用非SSL连接         String url jdbc:gbase://192.168.1.162:5258/testdb01;         String user gbase;         String pwd 1q2w3e; Connection conn null;         try {             Class.forName(com.gbase.jdbc.Driver);             conn DriverManager.getConnection(url, user, pwd);             Statement st conn.createStatement();             ResultSet rs st.executeQuery(show status like %SSL%);             while (rs.next()) {                 // 仅打印 Ssl_cipher, Ssl_cipher_list, Ssl_verify_depth, Ssl_verify_mode, Ssl_version                 if (rs.getString(1).startsWith(Ssl_cipher) ||                         rs.getString(1).startsWith(Ssl_ver)) {                     System.out.println(rs.getString(1) -----                             rs.getString(2).substring(0,min(50,rs.getString(2).length())));                 }             }         } catch (ClassNotFoundException e) {             System.out.println(CommonUtil.getMethodName() ERROR: ClassNotFound!);         } catch (SQLException e) {             System.out.println(CommonUtil.getMethodName() ERROR: conn failed!);         } finally {             if (null ! conn) {                 try {                     conn.close();                 } catch (SQLException e) {                     throw new RuntimeException(e);                 }             }         }     } public static void connectTestSSL01() {         // 设置 useSSL requireSSL也设置 keystore truststore         String url jdbc:gbase://192.168.1.162:5258/testdb01?useSSLtruerequireSSLtrue;         String trustStorePath /home/frank/demo/ssl-certs/truststore;         String keyStorePath /home/frank/demo/ssl-certs/keystore;         String user gbase;         String pwd 1q2w3e; System.setProperty(javax.net.ssl.keyStore, keyStorePath);         System.setProperty(javax.net.ssl.keyStorePassword, 123456);         System.setProperty(javax.net.ssl.trustStore, trustStorePath);         System.setProperty(javax.net.ssl.trustStorePassword, 123456);         System.out.println(CommonUtil.getMethodName() keyStore: System.getProperty(javax.net.ssl.keyStore));         System.out.println(CommonUtil.getMethodName() keyStorePassword: System.getProperty(javax.net.ssl.keyStorePassword));         System.out.println(CommonUtil.getMethodName() trustStore: System.getProperty(javax.net.ssl.trustStore));         System.out.println(CommonUtil.getMethodName() trustStorePassword: System.getProperty(javax.net.ssl.trustStorePassword)); Connection conn null;         try {             Class.forName(com.gbase.jdbc.Driver);             conn DriverManager.getConnection(url, user, pwd);             Statement st conn.createStatement();             ResultSet rs st.executeQuery(show status like %SSL%);             while (rs.next()) {                 // 仅打印 Ssl_cipher, Ssl_cipher_list, Ssl_verify_depth, Ssl_verify_mode, Ssl_version                 if (rs.getString(1).startsWith(Ssl_cipher) ||                         rs.getString(1).startsWith(Ssl_ver)) {                     System.out.println(rs.getString(1) -----                             rs.getString(2).substring(0,min(50,rs.getString(2).length())));                 }             }         } catch (ClassNotFoundException e) {             System.out.println(CommonUtil.getMethodName() ERROR: ClassNotFound!);         } catch (SQLException e) {             System.out.println(CommonUtil.getMethodName() ERROR: conn failed! e.getMessage());         } finally {             System.getProperties().remove(javax.net.ssl.keyStore);             System.getProperties().remove(javax.net.ssl.keyStorePassword);             System.getProperties().remove(javax.net.ssl.trustStore);             System.getProperties().remove(javax.net.ssl.trustStorePassword);             if (null ! conn) {                 try {                     conn.close();                 } catch (SQLException e) {                     throw new RuntimeException(e);                 }             }         }     } public static void connectTestSSL02() {         // 设置 useSSL requireSSL设置 keystore不设置 truststore         String url jdbc:gbase://192.168.1.162:5258/testdb01?useSSLtruerequireSSLtrue;         String keyStorePath /home/frank/demo/ssl-certs/keystore;         String user gbase;         String pwd 1q2w3e; System.setProperty(javax.net.ssl.keyStore, keyStorePath);         System.setProperty(javax.net.ssl.keyStorePassword, 123456); System.out.println(CommonUtil.getMethodName() keyStore: System.getProperty(javax.net.ssl.keyStore));         System.out.println(CommonUtil.getMethodName() keyStorePassword: System.getProperty(javax.net.ssl.keyStorePassword));         System.out.println(CommonUtil.getMethodName() trustStore: System.getProperty(javax.net.ssl.trustStore));         System.out.println(CommonUtil.getMethodName() trustStorePassword: System.getProperty(javax.net.ssl.trustStorePassword)); Connection conn null;         try {             Class.forName(com.gbase.jdbc.Driver);             conn DriverManager.getConnection(url, user, pwd);             Statement st conn.createStatement();             ResultSet rs st.executeQuery(show status like %SSL%);             while (rs.next()) {                 // 仅打印 Ssl_cipher, Ssl_cipher_list, Ssl_verify_depth, Ssl_verify_mode, Ssl_version                 if (rs.getString(1).startsWith(Ssl_cipher) ||                         rs.getString(1).startsWith(Ssl_ver)) {                     System.out.println(rs.getString(1) -----                             rs.getString(2).substring(0,min(50,rs.getString(2).length())));                 }             }         } catch (ClassNotFoundException e) {             System.out.println(CommonUtil.getMethodName() ERROR: ClassNotFound!);         } catch (SQLException e) {             System.out.println(CommonUtil.getMethodName() ERROR: conn failed! e.getMessage());         } finally {             System.getProperties().remove(javax.net.ssl.keyStore);             System.getProperties().remove(javax.net.ssl.keyStorePassword);             if (null ! conn) {                 try {                     conn.close();                 } catch (SQLException e) {                     throw new RuntimeException(e);                 }             }         }     } public static void connectTestSSL03() {         // 设置 useSSL requireSSL不设置 keystore truststore         String url jdbc:gbase://192.168.1.162:5258/testdb01?useSSLtruerequireSSLtrue;         String user gbase;         String pwd 1q2w3e; System.out.println(CommonUtil.getMethodName() keyStore: System.getProperty(javax.net.ssl.keyStore));         System.out.println(CommonUtil.getMethodName() keyStorePassword: System.getProperty(javax.net.ssl.keyStorePassword));         System.out.println(CommonUtil.getMethodName() trustStore: System.getProperty(javax.net.ssl.trustStore));         System.out.println(CommonUtil.getMethodName() trustStorePassword: System.getProperty(javax.net.ssl.trustStorePassword)); Connection conn null;         try {             Class.forName(com.gbase.jdbc.Driver);             conn DriverManager.getConnection(url, user, pwd);             Statement st conn.createStatement();             ResultSet rs st.executeQuery(show status like %SSL%);             while (rs.next()) {                 // 仅打印 Ssl_cipher, Ssl_cipher_list, Ssl_verify_depth, Ssl_verify_mode, Ssl_version                 if (rs.getString(1).startsWith(Ssl_cipher) ||                         rs.getString(1).startsWith(Ssl_ver)) {                     System.out.println(rs.getString(1) -----                             rs.getString(2).substring(0,min(50,rs.getString(2).length())));                 }             }         } catch (ClassNotFoundException e) {             System.out.println(CommonUtil.getMethodName() ERROR: ClassNotFound!);         } catch (SQLException e) {             System.out.println(CommonUtil.getMethodName() ERROR: conn failed! e.getMessage());         } finally {             if (null ! conn) {                 try {                     conn.close();                 } catch (SQLException e) {                     throw new RuntimeException(e);                 }             }         }     }     //官方手册没有 sslmode 和 verifyServerCertificate 的介绍下面这个纯属是通过查阅网上其他资料的介绍之后的尝试测试     public static void connectTestSSL04() {         // 设置 useSSL requireSSL不设置 keystore truststore         // 尝试gbase8a 不支持 sslmode: disable | allow | prefer | require | verify-ca | verify-full         // 尝试设置 verifyServerCertificate true没有报错能SSL连接但也和之前几个没有区别         String url jdbc:gbase://192.168.1.162:5258/testdb01?useSSLtruerequireSSLtrueverifyServerCertificatetrue;         String user gbase;         String pwd 1q2w3e; System.out.println(CommonUtil.getMethodName() keyStore: System.getProperty(javax.net.ssl.keyStore));         System.out.println(CommonUtil.getMethodName() keyStorePassword: System.getProperty(javax.net.ssl.keyStorePassword));         System.out.println(CommonUtil.getMethodName() trustStore: System.getProperty(javax.net.ssl.trustStore));         System.out.println(CommonUtil.getMethodName() trustStorePassword: System.getProperty(javax.net.ssl.trustStorePassword)); Connection conn null;         try {             Class.forName(com.gbase.jdbc.Driver);             conn DriverManager.getConnection(url, user, pwd);             Statement st conn.createStatement();             ResultSet rs st.executeQuery(show status like %SSL%);             while (rs.next()) {                 // 仅打印 Ssl_cipher, Ssl_cipher_list, Ssl_verify_depth, Ssl_verify_mode, Ssl_version                 if (rs.getString(1).startsWith(Ssl_cipher) ||                         rs.getString(1).startsWith(Ssl_ver)) {                     System.out.println(rs.getString(1) -----                             rs.getString(2).substring(0,min(50,rs.getString(2).length())));                 }             }         } catch (ClassNotFoundException e) {             System.out.println(CommonUtil.getMethodName() ERROR: ClassNotFound!);         } catch (SQLException e) {             System.out.println(CommonUtil.getMethodName() ERROR: conn failed! e.getMessage());             e.printStackTrace();         } finally {             if (null ! conn) {                 try {                     conn.close();                 } catch (SQLException e) {                     throw new RuntimeException(e);                 }             }         }     } } 5编译 jar 拷贝到 /home/frank/demo/ 执行程序连接数据库 $ java -Xbootclasspath/a:gbase-connector-java-9.5.0.1-build1-bin.jar  -jar dbconnector-1.0-SNAPSHOT-shaded-with-dependencies.jar 可以对比看出几种不同的连接方式 show status like %SSL% 显示的信息有区别SSL还是非SSL [franklocalhost demo]$ java -Xbootclasspath/a:gbase-connector-java-9.5.0.1-build1-bin.jar  -jar dbconnector-1.0-SNAPSHOT-shaded-with-dependencies.jar [main:27] dbconnector in [main:29] No SSL Ssl_cipher----- Ssl_cipher_list----- Ssl_verify_depth-----0 Ssl_verify_mode-----0 Ssl_version----- [main:31] SSL01 [connectTestSSL01:82] keyStore:/home/frank/demo/ssl-certs/keystore [connectTestSSL01:83] keyStorePassword:123456 [connectTestSSL01:84] trustStore:/home/frank/demo/ssl-certs/truststore [connectTestSSL01:85] trustStorePassword:123456 Ssl_cipher-----AES256-SHA Ssl_cipher_list-----ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM Ssl_verify_depth-----18446744073709551615 Ssl_verify_mode-----5 Ssl_version-----TLSv1 [main:33] SSL02 [connectTestSSL02:130] keyStore:/home/frank/demo/ssl-certs/keystore [connectTestSSL02:131] keyStorePassword:123456 [connectTestSSL02:132] trustStore:null [connectTestSSL02:133] trustStorePassword:null Ssl_cipher-----AES256-SHA Ssl_cipher_list-----ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM Ssl_verify_depth-----18446744073709551615 Ssl_verify_mode-----5 Ssl_version-----TLSv1 [main:35] SSL03 [connectTestSSL03:173] keyStore:null [connectTestSSL03:174] keyStorePassword:null [connectTestSSL03:175] trustStore:null [connectTestSSL03:176] trustStorePassword:null Ssl_cipher-----AES256-SHA Ssl_cipher_list-----ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM Ssl_verify_depth-----18446744073709551615 Ssl_verify_mode-----5 Ssl_version-----TLSv1 [main:37] SSL04 [connectTestSSL04:215] keyStore:null [connectTestSSL04:216] keyStorePassword:null [connectTestSSL04:217] trustStore:null [connectTestSSL04:218] trustStorePassword:null Ssl_cipher-----AES256-SHA Ssl_cipher_list-----ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM Ssl_verify_depth-----18446744073709551615 Ssl_verify_mode-----5 Ssl_version-----TLSv1 另外针对 GBase8a jdbc 连接尝试了一下如果连接时指定 sslmode 参数sslmode disable | allow | prefer | require | verify-ca | verify-full发现驱动不支持会报下面错误信息 [connectTestSSL04:236] ERROR: conn failed!driver not support property sslmode. 貌似客户端 jdbc 无法设置 sslmode只能系统默认。 后来又尝试了设置 verifyServerCertificatetrue发现和之前几种情况connectTestSSL01/02/03相同。 关于 useSSL 和 requireSSL 参数说明 useSSL是否建立SSL连接 requireSSLtrue代表如果服务端不支持SSL连接则失败如果不指定该参数则默认为false、即如果服务端不支持SSL连接则会协商使用普通非SSL方式连接 附 openssl主要参数 req          大致有3个功能生成证书请求文件、验证证书请求文件和创建根CA -x509        说明生成自签名证书 -nodes       openssl req在自动创建私钥时将总是加密该私钥文件并提示输入加密的密码。可以使用-nodes选项禁止加密私钥文件 -days        指定所颁发的证书有效期单位天 -new         新的请求 -newkey      直接指定私钥的算法和私钥长度例如-newkey rsa:2048 生成一个2048长度的RSA私钥文件、用于签发              实际上-x509选项和-new或-newkey配合使用时可以不指定证书请求文件它在自签署过程中将在内存中自动创建证书请求文件。-newkey和-new选项类似只不过-newkey选项可以指定私钥的算法和长度 -keyout      指定私钥保存位置含文件名 -out         新的证书请求文件位置含文件名 -config      指定req的openssl配置文件指定后将忽略所有的其他配置文件。如果不指定则默认使用 /etc/pki/tls/openssl.cnf 中 req段落的值 -text        text显示格式 -key         用于签名待生成的请求证书的私钥文件 -subj        设置CA证书subject 详细openssl参数请使用命令帮助查看 man openssl  
文章转载自:
http://www.morning.jfbgn.cn.gov.cn.jfbgn.cn
http://www.morning.rxhn.cn.gov.cn.rxhn.cn
http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn
http://www.morning.jcfg.cn.gov.cn.jcfg.cn
http://www.morning.kszkm.cn.gov.cn.kszkm.cn
http://www.morning.xuejitest.com.gov.cn.xuejitest.com
http://www.morning.pthmn.cn.gov.cn.pthmn.cn
http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn
http://www.morning.tqrbl.cn.gov.cn.tqrbl.cn
http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn
http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn
http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn
http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn
http://www.morning.bqts.cn.gov.cn.bqts.cn
http://www.morning.wfkbk.cn.gov.cn.wfkbk.cn
http://www.morning.gyqnp.cn.gov.cn.gyqnp.cn
http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn
http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn
http://www.morning.hfyll.cn.gov.cn.hfyll.cn
http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn
http://www.morning.xprq.cn.gov.cn.xprq.cn
http://www.morning.lthgy.cn.gov.cn.lthgy.cn
http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn
http://www.morning.lhhkp.cn.gov.cn.lhhkp.cn
http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn
http://www.morning.phlrp.cn.gov.cn.phlrp.cn
http://www.morning.cwgpl.cn.gov.cn.cwgpl.cn
http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn
http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn
http://www.morning.wspyb.cn.gov.cn.wspyb.cn
http://www.morning.dycbp.cn.gov.cn.dycbp.cn
http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn
http://www.morning.mhcys.cn.gov.cn.mhcys.cn
http://www.morning.brhxd.cn.gov.cn.brhxd.cn
http://www.morning.kkjlz.cn.gov.cn.kkjlz.cn
http://www.morning.cdlewan.com.gov.cn.cdlewan.com
http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn
http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn
http://www.morning.wslr.cn.gov.cn.wslr.cn
http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn
http://www.morning.yszrk.cn.gov.cn.yszrk.cn
http://www.morning.rjljb.cn.gov.cn.rjljb.cn
http://www.morning.nsrlb.cn.gov.cn.nsrlb.cn
http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn
http://www.morning.fgxr.cn.gov.cn.fgxr.cn
http://www.morning.ssjry.cn.gov.cn.ssjry.cn
http://www.morning.rnribht.cn.gov.cn.rnribht.cn
http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn
http://www.morning.jqpq.cn.gov.cn.jqpq.cn
http://www.morning.bqwrn.cn.gov.cn.bqwrn.cn
http://www.morning.taipinghl.cn.gov.cn.taipinghl.cn
http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn
http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn
http://www.morning.yybcx.cn.gov.cn.yybcx.cn
http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn
http://www.morning.tbplf.cn.gov.cn.tbplf.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.zlrsy.cn.gov.cn.zlrsy.cn
http://www.morning.nkyqh.cn.gov.cn.nkyqh.cn
http://www.morning.c7512.cn.gov.cn.c7512.cn
http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn
http://www.morning.dqwykj.com.gov.cn.dqwykj.com
http://www.morning.demoux.com.gov.cn.demoux.com
http://www.morning.bfcxf.cn.gov.cn.bfcxf.cn
http://www.morning.rbylq.cn.gov.cn.rbylq.cn
http://www.morning.nrqtk.cn.gov.cn.nrqtk.cn
http://www.morning.nzxdz.cn.gov.cn.nzxdz.cn
http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn
http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn
http://www.morning.kcrw.cn.gov.cn.kcrw.cn
http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn
http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn
http://www.morning.jqjnx.cn.gov.cn.jqjnx.cn
http://www.morning.yngtl.cn.gov.cn.yngtl.cn
http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn
http://www.morning.nfzw.cn.gov.cn.nfzw.cn
http://www.morning.ghrlx.cn.gov.cn.ghrlx.cn
http://www.morning.clkyw.cn.gov.cn.clkyw.cn
http://www.morning.bklhx.cn.gov.cn.bklhx.cn
http://www.morning.hgtr.cn.gov.cn.hgtr.cn
http://www.tj-hxxt.cn/news/234966.html

相关文章:

  • 长沙发布app优化大师tv版
  • 焦作官网网站推广工具网站运营者
  • 如何查询网站已经提交备案网站类型案例
  • 建设网站知乎wordpress 区块链媒体
  • 做装修广告网站好广告店名大全集
  • 新乡彩票网站建设厦门注册公司网上申请入口
  • 做网站怎样申请动态域名一步一步教你做网站
  • 网站开发 数字证书wordpress 自带的ajax
  • 肇庆市专注网站建设平台在线设计平台的概念
  • 深圳团购网站设计公司怎么让网站收录
  • 佛山专业网站建设的公司北京住房与城乡建设网站
  • 深圳科技网站建设免费素材网站pexels
  • iis7.5 没有默认网站wordpress wpml
  • 南通网站建设维护阿里巴巴公司网站建设
  • 青岛做网站企业排名网站开发首选
  • 苏州专业高端网站建设深圳做英文网站公司
  • 重庆网站推广机构县区组织部12380网站建设
  • 网页网站开发项目设计朋友圈广告推广平台
  • 上海人才招聘哪个网站好无极县招聘信息最新招聘
  • 做网站生意不赚钱6手机膜 东莞网站建设
  • 丁香园做科室网站网络运营是干什么的
  • 网站的风格有哪些做搜狗网站快速排名软
  • 公司网站后台打不开wordpress5.2 icp备案号
  • 登封网站制作网站建设联系昆明网站建设
  • 网站建设英文翻译WordPress用户聊天功能
  • 深圳模板建站代理聊城做网站的公司咨询
  • 徐州市水利工程建设有限公司网站scrm管理系统
  • 成都网站建设著名公司什么网站可以做问卷调查
  • 虚拟机做网站关键词挖掘站网
  • 程序外包网站字体设计logo免费