国策用例 4、配置客户端认证方式 hostssl all all 0.0.0.0/0 cert 1、生成国密证书 创建 CA 目录 cadir 并进入 mkdir cadir cd cadir copy 配置文件 openssl.cnf 到当前目录(不同环境,配置文件路径可能不一样) cp /etc/pki/tls/openssl.cnf . 开始搭建CA环境 mkdir ./demoCA ./demoCA/newcerts ./demoCA/private chmod 777 ./demoCA/private 创建serial文件,写入01 echo '01'>./demoCA/serial 创建文件index.txt touch ./demoCA/index.txt 修改openssl.cnf配置文件中CA_default的参数 dir = ./demoCA default_md = sha256 至此CA环境搭建完成 生成CA私钥 openssl ecparam -out demoCA/private/cakey.pem -name SM2 -genkey 生成根证书请求文件 openssl req -config openssl.cnf -key demoCA/private/cakey.pem -new -out cacert.req -subj /C=CN/ST=BJ/L=HaiDian/O=VAST/OU=SEC/CN=CLIENT 生成自签发根证书 生成根证书时,需要修改openssl.cnf文件,设置basicConstraints=CA:TRUE vi openssl.cnf 生成CA自签发根证书 openssl ca -config openssl.cnf -in cacert.req -keyfile demoCA/private/cakey.pem -selfsign -out demoCA/cacert.pem 生成服务器私钥文件server.key openssl ecparam -out server.key -name SM2 -genkey 生成服务器证书请求文件server.req openssl req -config openssl.cnf -key server.key -new -out server.req -subj /C=CN/ST=BJ/L=HaiDian/O=VAST/OU=SEC/CN=server 生成服务端/客户端证书时,修改openssl.cnf文件,设置basicConstraints=CA:FALSE vi openssl.cnf 对生成的服务器证书请求文件进行签发,签发后将生成正式的服务器证书server.crt openssl ca -config openssl.cnf -in server.req -out server.crt -days 3650 生成客户端私钥 openssl ecparam -out client.key -name SM2 -genkey 生成客户端证书请求文件 openssl req -config openssl.cnf -new -key client.key -out client.req -subj /C=CN/ST=BJ/L=HaiDian/O=VAST/OU=SEC/CN=client 对生成的客户端证书请求文件进行签发,签发后将生成正式的客户端证书client.crt openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 注:中间会产生交互,按照以下内容进行填写(需注意每个交互的common name填不一样的内容,如分别写:test1,test2,test3): Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:shanxi Locality Name (eg, city) []:xian Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc Organizational Unit Name (eg, section) []:hello --Common Name可以随意命名 Common Name (eg, YOUR name) []:world --Email可以选择性填写 Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 1qaz!QAZ An optional company name []:world # --------------------------------------- https://gitee.com/opengauss/openGauss-server/pulls/3254 mkdir certs cp ../../tassl/tassl_demo/cert/openssl.cnf certs/ cd certs #CA openssl ecparam -genkey -name SM2 -out CA.key openssl req -config openssl.cnf -new -subj /C=CN/ST=BJ/L=HaiDian/O=YUNHEENMO/OU=MogDB/CN=FooCA -key CA.key -out CA.csr openssl x509 -sm3 -req -days 1500 -in CA.csr -extfile openssl.cnf -extensions v3_ca -signkey CA.key -out CA.crt #server openssl ecparam -genkey -name SM2 -out server.key openssl req -config openssl.cnf -new -subj /C=CN/ST=BJ/L=HaiDian/O=YUNHEENMO/OU=MogDB/CN=server -key server.key -out server.csr openssl x509 -sm3 -req -days 1500 -in server.csr -CA CA.crt -CAkey CA.key -extfile openssl.cnf -out server.crt -CAcreateserial #server_enc openssl ecparam -genkey -name SM2 -out server_enc.key openssl req -config openssl.cnf -new -subj /C=CN/ST=BJ/L=HaiDian/O=YUNHEENMO/OU=MogDB/CN=server -key server_enc.key -out server_enc.csr openssl x509 -sm3 -req -days 1500 -in server_enc.csr -CA CA.crt -CAkey CA.key -extfile openssl.cnf -out server_enc.crt -CAcreateserial #client openssl ecparam -genkey -name SM2 -out client.key openssl req -config openssl.cnf -new -subj /C=CN/ST=BJ/L=HaiDian/O=YUNHEENMO/OU=MogDB/CN=client -key client.key -out client.csr openssl x509 -sm3 -req -days 1500 -in client.csr -CA CA.crt -CAkey CA.key -extfile openssl.cnf -out client.crt -CAcreateserial #client_enc openssl ecparam -genkey -name SM2 -out client_enc.key openssl req -config openssl.cnf -new -subj /C=CN/ST=BJ/L=HaiDian/O=YUNHEENMO/OU=MogDB/CN=client -key client_enc.key -out client_enc.csr openssl x509 -sm3 -req -days 1500 -in client_enc.csr -CA CA.crt -CAkey CA.key -extfile openssl.cnf -out client_enc.crt -CAcreateserial #修改权限 chmod 0600 * #增加密码保护 openssl ec -sm4 -in server.key -out server.key -passout pass:123qweQWE gs_guc generate -S 123qweQWE -D ./ -o server openssl ec -sm4 -in server_enc.key -out server_enc.key -passout pass:234werWER gs_guc generate -S 234werWER -D ./ -o server_enc openssl ec -sm4 -in client.key -out client.key -passout pass:345ertERT gs_guc generate -S 345ertERT -D ./ -o client openssl ec -sm4 -in client_enc.key -out client_enc.key -passout pass:456rtyRTY gs_guc generate -S 456rtyRTY -D ./ -o client_enc chmod 0600 * #客户端: export CERT=`pwd` echo ' export CERT=`pwd` export PGSSLMODE=verify-ca export PGSSLTLCP=1 export PGSSLROOTCERT=$CERT/CA.crt export PGSSLKEY=$CERT/client.key export PGSSLCERT=$CERT/client.crt export PGSSLENCKEY=$CERT/client_enc.key export PGSSLENCCERT=$CERT/client_enc.crt ' > client_env source client_env #服务器: gs_guc set -D $GAUSSHOME/data -c "ssl=on" gs_guc set -D $GAUSSHOME/data -c "ssl_ciphers = 'ALL'" gs_guc set -D $GAUSSHOME/data -c "ssl_use_tlcp=on" gs_guc set -D $GAUSSHOME/data -c "ssl_ca_file = '$CERT/CA.crt'" gs_guc set -D $GAUSSHOME/data -c "ssl_key_file='$CERT/server.key'" gs_guc set -D $GAUSSHOME/data -c "ssl_cert_file='$CERT/server.crt'" gs_guc set -D $GAUSSHOME/data -c "ssl_enc_key_file='$CERT/server_enc.key'" gs_guc set -D $GAUSSHOME/data -c "ssl_enc_cert_file='$CERT/server_enc.crt'" 1、生成国密证书 # 创建 CA 目录 cadir 并进入 # copy 配置文件 openssl.cnf 到当前目录(不同环境,配置文件路径可能不一样) cp /etc/pki/tls/openssl.cnf . # 开始搭建CA环境 mkdir ./demoCA ./demoCA/newcerts ./demoCA/private chmod 777 ./demoCA/private # 创建serial文件,写入01 echo '01'>./demoCA/serial # 创建文件index.txt touch ./demoCA/index.txt # 至此CA环境搭建完成 # 生成CA私钥 openssl ecparam -out demoCA/private/cakey.pem -name SM2 -genkey # 生成根证书请求文件 openssl req -config openssl.cnf -key demoCA/private/cakey.pem -new -out cacert.req # 生成自签发根证书 # 生成根证书时,需要修改openssl.cnf文件,设置basicConstraints=CA:TRUE vi openssl.cnf # 生成CA自签发根证书 openssl ca -config openssl.cnf -in cacert.req -keyfile demoCA/private/cakey.pem -selfsign -out demoCA/cacert.pem # 生成服务器私钥文件server.key openssl ecparam -out server.key -name SM2 -genkey # 生成服务器证书请求文件server.req openssl req -config openssl.cnf -key server.key -new -out server.req # 生成服务端/客户端证书时,修改openssl.cnf文件,设置basicConstraints=CA:FALSE vi openssl.cnf # 对生成的服务器证书请求文件进行签发,签发后将生成正式的服务器证书server.crt openssl ca -config openssl.cnf -in server.req -out server.crt -days 3650 # 生成客户端私钥 openssl ecparam -out client.key -name SM2 -genkey # 生成客户端证书请求文件 openssl req -config openssl.cnf -new -key client.key -out client.req # 对生成的客户端证书请求文件进行签发,签发后将生成正式的客户端证书client.crt openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 # 注:中间会产生交互,按照以下内容进行填写(需注意每个交互的common name填不一样的内容,如分别写:test1,test2,test3): Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:shanxi Locality Name (eg, city) []:xian Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc Organizational Unit Name (eg, section) []:hello --Common Name可以随意命名 Common Name (eg, YOUR name) []:world --Email可以选择性填写 Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 1qaz!QAZ An optional company name []:world 2、配置客户端文件 chmod 600 client.key chmod 600 client.crt chmod 600 ./demoCA/cacert.pem chmod 600 server.key chmod 600 server.crt 3、配置服务器端参数 cp server.crt server.key ./demoCA/cacert.pem $PGDATA cp client.crt client.key /home/vastbase/data/vastbase/ export PGSSLCERT="/home/vastbase/cadir/client.crt" export PGSSLKEY="/home/vastbase/cadir/client.key" export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/vastbase/data/vastbase/cacert.pem" vi postgresql.conf ssl = on require_ssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key' ssl_ca_file = 'cacert.pem' ssl_crl_file = '' 4、配置客户端认证方式 vi pg_hba.conf hostssl all all 0.0.0.0/0 cert 5、重启数据库服务 vb_ctl restart vsql - vastbase -r --创建生成客户端证书时Common Name同名用户 create user test3 password'Test@123'; 1、客户端vsql连接到服务端 vsql -dvastbase -r -h IP -U test3 --预期 连接成功,提示SSL connection 1 需求背景 1.2 Oracle Profile功能 一、查看profile信息 设置sqlplus输出格式
...