vastbase支持SSL传输加密

1.搭建CA环境(使用数据库OS账户vastbase)

1.1.创建认证机制配置目录

cd ~
mkdir test
image.png

1.2.拷贝openssl文件到上述配置目录

cd /etc/pki/tls 
cp openssl.cnf ~/test 
image.png

1.3.开始在 test文件夹下 创建CA环境

cd ~/test 
1)创建文件夹demoCA./demoCA/newcerts./demoCA/private 并授权
mkdir ./demoCA ./demoCA/newcerts ./demoCA/private 
chmod 777 ./demoCA/private 
2)创建serial文件,写入01 
echo '01'>./demoCA/serial 
3)创建文件index.txt 
touch ./demoCA/index.txt 
4)修改openssl.cnf配置文件中配置项[ CA_default ]下的dir参数 
dir = ./demoCA 
default_md = sha256 
--至此CA环境搭建完成
image.png

2.生成根私钥(root用户下执行)

2.1.生成CA私钥 (openssl是数据库安装路径下的一二进制工具)

'[root@tpcc02 /home/vastbase/test]#cd /home/vastbase/test/
[root@tpcc02 /home/vastbase/test]#openssl genrsa -aes256 -out demoCA/private/cakey.pem 2048 
-----执行以上命令,会要求输入两次密码  sys_Oracle_1
image.png

3.生成根证书请求文件server.req

'[root@tpcc02 /home/vastbase/test]# openssl req -config openssl.cnf -new -key demoCA/private/cakey.pem -out demoCA/careq.pem   
---依次输入: 
sys_Oracle_1 |CN   |ningxia |yinchuan|vastdata        |vastbase               |mike         |可忽略(直接回车)       |sys_Oracle_1       |vastdata
image.png

4.生成自签发根证书

4.1.修改openssl.cnf文件中的配置项[usr_cert]下的basicConstraints参数:

'[root@tpcc02 /home/vastbase/test]# vim openssl.cnf
basicConstraints=CA:TRUE 

4.2.生成CA自签发根证书

'[root@tpcc02 /home/vastbase/test]# openssl ca -config openssl.cnf -out demoCA/cacert.pem -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pem
----依次输入密码sys_Oracle_1, 两次确认输入 y
--至此CA根证书自签发完成,根证书demoCA/cacert.pem。
image.png

5.生成服务端证书私钥

5.1.生成服务器私钥文件server.key

'[root@tpcc02 /home/vastbase/test]# openssl genrsa -aes256 -out server.key 2048
---连续输入两次密码 sys_Oracle_1
image.png

6.生成服务端证书请求文件

6.1.生成服务器证书请求文件server.req

'[root@tpcc02 /home/vastbase/test]# openssl req -config openssl.cnf -new -key server.key -out server.req
---依次输入: 
sys_Oracle_1 |CN   |ningxia |yinchuan|vastdata        |vastbase               |mike         |可忽略       |sys_Oracle_1       |vastdata
image.png

7.生成服务端证书

7.1.修改openssl.cnf文件中的配置项[usr_cert]下的 basicConstraints 参数:

[usr_cert]
basicConstraints=CA:TRUE 改为 CA:FALSE

7.2.修改 demoCA/index.txt.attr中属性为no。

'[root@tpcc02 /home/vastbase/test]#vi demoCA/index.txt.attr 
unique_subject = yes  --改为no

7.3.对生成的服务器证书请求文件进行签发,签发后将生成正式的服务器证书server.crt

[root@tpcc02 /home/vastbase/test]#openssl ca  -config openssl.cnf -in server.req -out server.crt -days 3650 -md sha256 
-----依次输入密码 sys_Oracle_1, 两次确认输入 y
image.png

7.4.如果不去掉服务器私钥的密码保护需要使用vb_guc工具对存储密码进行加密保护(vastbase用户下执行)

[vastbase@tpcc02 ~/test]$vb_guc encrypt -M server -K sys_Oracle_1 -D ./ 
---vb_guc加密后会生成server.key.cipher,server.key.rand两个私钥密码保护文件。
image.png

8.客户端证书、私钥生成

8.1.生成客户端私钥

'[root@tpcc02 /home/vastbase/test]# openssl genrsa -aes256 -out client.key 2048
输入两次密码 sys_Oracle_1
image.png

8.2.生成客户端证书请求文件

'[root@tpcc02 /home/vastbase/test]#openssl req -config openssl.cnf -new -key client.key -out client.req     
---依次输入: 
sys_Oracle_1 |CN   |ningxia |yinchuan|vastdata        |vastbase               |mike         |可忽略       |sys_Oracle_1       |vastdata
image.png

8.3.对生成的客户端证书请求文件进行签发,签发后将生成正式的客户端证书client.crt

[root@tpcc02 /home/vastbase/test]#openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 -md sha256
-----依次输入密码 sys_Oracle_1, 两次确认输入 y
image.png

8.4.如果不去掉客户端私钥的密码保护需要使用vb_guc工具对存储密码进行加密保护

[vastbase@tpcc02 ~/test]$ vb_guc encrypt -M client -K sys_Oracle_1 -D ./
---vb_guc加密后会生成client.key.cipher,client.key.rand两个私钥密码保护文件。
image.png

8.5.将客户端密钥转化为DER格式,方法如下:

[root@tpcc02 /home/vastbase/test]#openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt
--输入密码   sys_Oracle_1
image.png

9.数据库配置

9.1.拷贝 server.crt、server.key、server.key.cipher、server.key.rand、server.req、cacert.pem拷贝至实例目录下,并修改权限:

'[root@tpcc02 ~]#cd /home/vastbase/test
[root@tpcc02 /home/vastbase/test]# chown vastbase. client.*
[root@tpcc02 /home/vastbase/test]# chown vastbase. server.*
[root@tpcc02 /home/vastbase/test]# cd demoCA/
[root@tpcc02 /home/vastbase/test/demoCA]# chown vastbase. cacert.pem

9.2.在vastbase用户下拷贝认证文件:

[vastbase@tpcc02 ~/test/demoCA]$ cp cacert.pem  $PGDATA
[vastbase@tpcc02 ~/test]$ cp server.* $PGDATA
image.png

image.png

9.3.授权600权限

[vastbase@tpcc02 ~/data/vastbase]$ chmod 600 server.*
[vastbase@tpcc02 ~/data/vastbase]$ chmod 600 cacert.pem
image.png

9.4.在postgresql.conf文件中添加相关参数:

ssl = on
require_ssl = on
ssl_cert_file='server.crt'
ssl_key_file='server.key'
ssl_ca_file='cacert.pem'

9.5.在pg_hba.conf中添加hostssl,重启数据库restart

hostssl all all 0.0.0.0/0 sha256
[vastbase@tpcc02 ~/data/vastbase]$ vb_ctl restart
image.png

9.6.配置客户端PGSSLCERT、PGSSLKEY、PGSSLMODE、PGSSLROOTCERT参数:

[vastbase@tpcc02 ~]$vim   .Vastbase
export PGSSLCERT="$HOME/test/client.crt"
export PGSSLKEY="$HOME/test/client.key"
export PGSSLMODE="verify-ca"
export PGSSLROOTCERT="$HOME/test/demoCA/cacert.pem"
[vastbase@tpcc02 ~]$ source ~/.Vastbase

9.7.修改客户端秘钥的权限:

[vastbase@tpcc02 ~]$ cd test/
[vastbase@tpcc02 ~/test]$ chmod 600 client.key
[vastbase@tpcc02 ~/test]$ chmod 600 client.key.pk8
[vastbase@tpcc02 ~/test]$ chmod 600 client.crt
[vastbase@tpcc02 ~/test]$ chmod 600 client.key.cipher
[vastbase@tpcc02 ~/test]$ chmod 600 client.key.rand
[vastbase@tpcc02 ~/test]$ chmod 600 demoCA/cacert.pem
image.png

image.png

10.测试验证

10.1.客户端vsql连接服务端:

[vastbase@tpcc02 ~/data/vastbase]$ vsql -r -d testdb -h 10.0.0.152 -Utestuser -WHailiang@123
image.png

10.2.vds开发工具连接数据库(SSL方式):

image.png

10.3.使用tcpdump工具抓取传输数据(加密前是明文,加密后是密文)

[root@tpcc02 ~]# tcpdump -i ens33 -s 0 -l -w - dst port 5432 | strings
image.png

10.4.在vds客户端发送查询表的sql

image.png

10.5.tcpdump 已经能正常抓取到数据,为密文

image.png

11.JDBC连接示例:

import java.util.Properties;

String urlWithCe = "jdbc:postgresql://10.0.0.152:5432/testdb" ;
Properties properties = new Properties();
// 配置以ssl访问
properties.setProperty("ssl", "true");
// 配置根证书地址
properties.setProperty("sslrootcert", "cacert.pem");
// 配置客户端私钥地址

properties.setProperty("sslkey", "client.key");
// 配置客户端证书地址
properties.setProperty("sslcert", "client.crt");
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection(urlWithCe, properties);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容