服务器:
1.确保安装openssl
创建目录存放认证mm,位置mkdir -p /root/mm
2.在data目录下,创建自签名的证书
为服务器创建一个快速的自签名的证书,填充那些openssl要求的信息。确保把本地主机名当做"Common Name"输入;挑战密码可以留空。 该程序将生成一个用口令保护的密钥,它不会接受小于四字符的口令。
openssl req -new -text -out server.req -days 3650
密码:ASDFGhjkl!@#$%^7890 ###自定义,两次,之后确定往下
A challenge password []:ASDFGhjkl!@#$%^7890 ##再输入一次
要移去密钥(如果你想自动启动服务器就必须这样),运行下面的命令:
openssl rsa -in privkey.pem -out server.key
密码:ASDFGhjkl!@#$%^7890
rm privkey.pem
将一个证书变成自签名的证书并复制密钥和证书到服务器将要查找它们的地方
openssl req -X509 -in server.req -text -key server.key -out server.crt -days 3650
【有的openssl的命令是 openssl req -x509 -in server.req -text -key server.key -out server.crt -days 3650】
#####警告忽略
修改文件权限,如果文件的权限比这个更自由,服务器将拒绝该文件。
chmod og-rwx server.key
生成根证书
cp server.crt root.crt
修改三个文件权限
chown kingbase. /root/mm/*
chmod 600 /root/mm/*
创建目录 mkdir -p /home/kingbase/.kingbase
6.为客户端创建所需证书
生成kingbase8.key
cd /home/kingbase/.kingbase/
openssl genrsa -des3 -out kingbase.key 1024
密码:ASDFGhjkl!@#$%^7890
openssl rsa -in kingbase.key -out kingbase.key
密码:ASDFGhjkl!@#$%^7890
chmod 400 kingbase.key
生成kingbase8.csr,CN需要指定为要连接数据库的用户名(需要免密登录的话必须指定正确,不需要的话并不强制确定)
openssl req -new -key kingbase.key -out kingbase.csr -subj '/C=GB/ST=Berkshire/L=Newbury/O=Kingbase/CN=system'
生成kingbase8.crt
cp /root/mm/root.crt /home/kingbase/.kingbase/
cp /root/mm/server.key /home/kingbase/.kingbase/
openssl X509 -sha1 -req -in kingbase.csr -CA root.crt -CAkey server.key -out kingbase.crt -CAcreateserial -days 3650
【有的openssl命令是小写的x例: openssl x509 -sha1 -req -in kingbase.csr -CA root.crt -CAkey server.key -out kingbase.crt -CAcreateserial -days 3650 】
生成kingbase8.pk8
修改权限
chown kingbase. /home/kingbase/.kingbase/*
chmod 0600 /home/kingbase/.kingbase/*
7.客户端的证书需要放到机器用户的家目录/.kingbase的目录里把kingbase.key,kingbase.crt,root.crt放入到.kingbase目录,并设置权限为0600。
把server.key,server.crt,root.crt放入到data目录中,并设置权限为0600。
cd /root/mm
cp server.crt /data/dbdata/data/data/
chown kingbase. /data/dbdata/data/data/server.crt
cd /home/kingbase/.kingbase
cp server.key root.crt /data/dbdata/data/data/
chown kingbase. /data/dbdata/data/data/server.key
chown kingbase. /data/dbdata/data/data/root.crt
###mm目录中也有,找一下相对应文件
3.配置kingbase.conf文件
ssl = on # (change requires restart)
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
# (change requires restart)
#ssl_prefer_server_ciphers = on # (change requires restart)
#ssl_ecdh_curve = 'prime256v1' # (change requires restart)
#ssl_cert_file = 'server.crt' # (change requires restart)
#ssl_key_file = 'server.key' # (change requires restart)
ssl_ca_file = 'root.crt' # (change requires restart)
#ssl_crl_file = '' # (change requires restart)
4.配置sys_hba.conf文件(如果前面有相同配置的ip地址,需注释掉,否则解析不到ssl认证方式)
hostssl all all 0.0.0.0/0 md5 clientcert=1
5.重启数据库服务器
ksql连接时需要指定-h参数
需要用JDBC时SSL的配置如下
jdbc:
通过参数sslmode配置证书验证方式,该参数支持四个值:disable(禁用SSL)、require、verify-ca、verify-full。使用verify-ca和verify-full时,需通过连接参数sslrootcert指定根证书文件的位置,如不指定,Linux默认路径为$HOME/.kingbase8/root.crt,Windows默认路径为%APPDATA%\kingbase8\root.crt,将服务器data目录下的root.crt放到对应目录下即可。
通过参数sslcert配置客户端证书位置,如不指定,Linux默认路径为$HOME/.kingbase8/kingbase8.crt,Windows默认路径为%APPDATA%\kingbase8\kingbase8.crt,将服务器data目录下的kingbase8.crt放到对应目录下即可。
通过参数sslkey配置秘钥文件位置,如不指定,Linux默认路径为$HOME/.kingbase8/kingbase8.pk8,Windows默认路径为%APPDATA%\kingbase8\kingbase8.pk8,将服务器data目录下的kingbase8.pk8放到对应目录下即可。
举例:jdbc:kingbase8://192.168.222.128:54321/TEST?sslmode=verify-ca&sslrootcert=root.crt&sslcert=kingbase8.crt&sslkey=kingbase8.pk8
!!!!!单机例子(集群换相应串):jdbc:kingbase8://10.75.30.181:54321/test?sslmode=verify-ca&sslrootcert=C:\Users\Administrator\Desktop\中海油\dump_bak\root.crt&sslcert=C:\Users\Administrator\Desktop\中海油\dump_bak\kingbase8.crt&sslkey=C:\Users\Administrator\Desktop\中海油\dump_bak\kingbase.key
注:目录位置替换
!!!!!!可忽略:
SSL证书免密登录说明
1.首先准备一套适用于测试登录用户的证书,生成证书时CN值改为测试用户的用户名,证书生成方法见上
2.在家目录下创建一个.kingbase目录(例如:/home/kingbase/.kingbase)
3.把kingbase.key,kingbase.crt,root.crt放入到.kingbase目录,并设置权限为0600
4.把server.key,server.crt,root.crt放入到data目录中,并设置权限为0600
5.初始化数据库,设置conf文件里面,ssl参数值为on,ssl_ca_file参数设置为root.crt
6.设置hba文件
6.1 增加hostssl项,注意前面如果有相同的ip限制或包含此ip的范围限制,需要注释掉相同项,否则会首先解析到上面的ip连接方式,并不会采用ssl方式认证连接。
6.2 设置hostssl项的认证方式为cert
6.3 连接的时候客户端需要指定-h选项即指定ip地址
例:hostssl all all 127.0.0.1 cert