美文网首页
vastbase支持SSL传输加密

vastbase支持SSL传输加密

作者: 苏水的北 | 来源:发表于2023-09-21 10:44 被阅读0次

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);

相关文章

  • 使用HTTPS/SSL保障项目安全

    一、 要为应用添加SSL/HTTPS支持,首先需要生成一些测试证书,并为应用程序添加加密传输的支持。 二、 我们创...

  • HTTPS的访问过程

    SSL/TLS是加密传输的协议1、浏览器将自己支持的加密规则发送给网站2、网站选出一组加密算法和HASH算法,并将...

  • 笔记(二十一)——Http、Https、数据加解密

    1、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。数据加密方式: 对称加...

  • 宝塔面板后台设置免费SSL证书Let's Encrypt

    首先上最后的图: 通过SSL加密传输相对来说比较安全一些,至少传输过程中是加密的。。。首先是宝塔面板启用SSL的方...

  • 前端面试01:说一下 http 和 https

    https 的 SSL 加密是在传输层实现的。 (1)http 和 https 的基本概念 http: 超文本传输...

  • 关于SSL证书签名

    SSL协议简介:- 传输层和应用层之间的安全协议- 非对称加密(身份认证)+ 对称加密(信息加密) 应用场景:支付...

  • SSL加密测试

    1.加密,接口传输使用SSL加密,“利用数据加密协议”(MD5,hash加密等算法) 目的:为了保护敏感数据在传送...

  • App适配https请求

    iOS进行https请求时,比http请求多了一项ssl加密功能,在数据传输层对数据进行加密传输,保证数据的安全。...

  • https加密原理

    http/https最大的差异在于https使用了加密传输数据。 https 基于tcl/ssl加密,大致上是先使...

  • SSL

    SSL主要作用:对传输信息进行加密(客户端与服务器端的链路加密)、认证用户身份(基于数字证书的高强度认证) SSL...

网友评论

      本文标题:vastbase支持SSL传输加密

      本文链接:https://www.haomeiwen.com/subject/zecavdtx.html