云数据库 GaussDB-连接数据库(以SSL方式):示例

时间:2023-11-01 16:22:17

示例

注:示例1和示例2选择其一。

 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
public class SSL{    public static void main(String[] args) {        Properties urlProps = new Properties();        String urls = "jdbc:postgresql://10.29.37.136:8000/postgres";        /**         * ==================  示例1  使用NonValidatingFactory通道         */        urlProps.setProperty("sslfactory","org.postgresql.ssl.NonValidatingFactory");        urlProps.setProperty("user", "world");        urlProps.setProperty("password", "test@123");        urlProps.setProperty("ssl", "true");        /**         * ==================  示例2  使用证书         */        urlProps.setProperty("sslcert", "client.crt");        urlProps.setProperty("sslkey", "client.key.pk8");        urlProps.setProperty("sslrootcert", "cacert.pem");        urlProps.setProperty("user", "world");        urlProps.setProperty("ssl", "true");        /* sslmode可配置为:require、verify-ca、verify-full,以下三个示例选择其一*/        /* ==================  示例2.1  设置sslmode为require,使用证书 */        urlProps.setProperty("sslmode", "require");        /* ==================  示例2.2  设置sslmode为verify-ca,使用证书 */        urlProps.setProperty("sslmode", "verify-ca");        /* ==================  示例2.3  设置sslmode为verify-full,使用证书(Linux下验证) */        urls = "jdbc:postgresql://world:8000/postgres";        urlProps.setProperty("sslmode", "verify-full");        try {            Class.forName("org.postgresql.Driver").newInstance();        } catch (Exception e) {            e.printStackTrace();        }        try {            Connection conn;            conn = DriverManager.getConnection(urls,urlProps);            conn.close();        } catch (Exception e) {            e.printStackTrace();        }    }}/** * 注:将客户端密钥转化为DER格式: * openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt * openssl pkcs8 -topk8 -inform PEM -in client.key -outform DER -out client.key.der -v1 PBE-MD5-DES * openssl pkcs8 -topk8 -inform PEM -in client.key -outform DER -out client.key.der -v1 PBE-SHA1-3DES * 以上算法由于安全级别较低,不推荐使用。 * 如果客户需要采用更高级别的私钥加密算法,启用bouncycastle或者其他第三方私钥解密密码包后可以使用的私钥加密算法如下: * openssl pkcs8 -in client.key -topk8  -outform DER -out client.key.der -v2 AES128 * openssl pkcs8 -in client.key -topk8  -outform DER -out client.key.der -v2 aes-256-cbc -iter 1000000 * openssl pkcs8 -in client.key -topk8 -out client.key.der  -outform Der -v2 aes-256-cbc -v2prf hmacWithSHA512 * 启用bouncycastle:使用jdbc的项目引入依赖:bcpkix-jdk15on.jar包,版本建议:1.65以上。 */
support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0060.html