安全登录操作流程¶
命令行方式生成 CA 证书步骤¶
将目录切换到数据库安装目录的 bin 下,创建 private 文件夹,并在 private 下创建 .rnd
在 bin 下打开终端
生成根证书私钥
openssl genrsa -passout pass:rootpwd -out private\ca.key -rand private\.rnd -aes256 2048 rootpwd 为根证书私钥密码,必须包含大写、小写、数字、特殊符号中的三种,且长度为 16
生成根证书
openssl req -passin pass:rootpwd -new -x509 -days 3650 -key private\ca.key -out private\ca.crt -config openssl.cnf rootpwd 为根证书私钥密码,步骤二设置的密码 当前步骤会弹出部分要填写的内容,直接回车全部跳过即可
生成一个 CRL 文件
openssl ca -gencrl -passin pass:rootpwd -out private\ca.crl -config openssl.cnf rootpwd 为根证书私钥密码,步骤二设置的密码
生成子证书私钥
openssl genrsa -passout pass:subpwd -out private\dbname.key -rand private\.rnd -aes256 2048 subpwd 为子证书私钥密码,必须包含大写、小写、数字、特殊符号中的三种,且长度为 16,dbname 为数据库名
生成子证书的证书请求
openssl req -passin pass:subpwd -new -key private\dbname.key -out newreq.pem -config openssl.cnf subpwd 为子证书私钥密码,步骤五设置的密码,dbname 为数据库名 当前步骤会弹出部分要填写的内容,只填写 Organizational Unit Name(数据库名 dbname)、Common Name(数据库所在机器的 IP 地址)
注册子证书请求
openssl ca -passin pass:rootpwd -in newreq.pem -config openssl.cnf -policy policy_anything -out private\dbname.crt rootpwd 为根证书私钥密码,步骤二设置的密码,dbname 为数据库名 当前步骤会询问是否注册和提交,全部填 y
生成用户证书私钥
openssl genrsa -passout pass:usrpwd -out private\usrname.key -rand private\.rnd -aes256 2048 usrpwd 为用户证书私钥密码,必须包含大写、小写、数字、特殊符号中的三种,且长度为 16,usrname 为需要生成证书的用户
生成用户证书的证书请求
openssl req -passin pass:usrpwd -new -key private\usrname.key -out newreq.pem -config openssl.cnf usrpwd 为用户证书私钥密码,步骤八设置的密码,usrname 为需要生成证书的用户 当前步骤会弹出部分要填写的内容,只填写 Organizational Unit Name(数据库名 dbname)、Common Name(需要生成证书的用户 username)
注册用户证书请求
openssl ca -passin pass:rootpwd -in newreq.pem -config openssl.cnf -policy policy_anything -out private\usrname.crt rootpwd 为根证书私钥密码,步骤二设置的密码,usrname 需要生成证书的用户 当前步骤会询问是否注册和提交,全部填 y
将步骤十生成的 usrname.key 重命名为 usrname0.key
私钥文件转换为 PKCS#8 格式
openssl pkcs8 -topk8 -inform PEM -in private\usrname0.key -outform PEM -out private\usrname.key 当前步骤需要输入三次密码,均输入用户证书私钥密码,即步骤八设置的密码
注解
上述命令行方式生成证书所使用的参数及要求与客户端生成方式保持一致
客户端方式生成 CA 证书步骤¶
启动 "dba 管理工具" ,在 "工具" 中找到 "CA证书工具"
点击 "数据库服务器端证书&注册"
依次设置 "数据库服务器端根证书私钥密码"、"数据库服务器端子证书私钥密码"、"数据库名称"、"IP地址"、"密钥长度"(注:密码有复杂度限制,并且长度为 16)
点击 "生成服务器证书",此时会生成五个文件在数据库安装目录的 bin/private 下
- ca.crl:证书吊销列表
- ca.crt:根证书
- ca.key:根证书私钥
- 库名.crt(例如:osrdb.crt):服务器证书
- 库名.key(例如:osrdb.key):服务器证书私钥
点击 "数据库用户证书&注册"
依次设置 "数据库服务器端根证书私钥密码"(同步骤三的根证书私钥密码)、"数据库用户根证书私钥密码"(同步骤三的根证书私钥密码)、"私钥密码"、"数据库名称"(同步骤三的数据库名)、"用户名"、"密钥长度"
点击 "生成数据库用户证书",此时会生成两个文件在数据库安装目录的 bin/private 下
- 用户名.crt(例如:sysdba.crt):客户端证书
- 用户名.key(例如:sysdba.key):客户端证书私钥
服务器配置步骤¶
将 ca.crl、ca.crt、ca.key、库名.crt、库名.key 拷贝至 $SZ_OSCAR_HOME/admin 下
修改数据库配置参数(conf 文件,在 $SZ_OSCAR_HOME/admin 下,例如 OSRDB.conf)
- SECURE_COMMUNICATION_LEVEL=2 // 启用SSL, 强制客户端进行基于SSL的安全通信
- SERVER_CERTIFICATE_FILE=osrdb.crt // 设置服务器证书名
- SERVER_KEY_FILE=osrdb.key // 设置服务器证书私钥
- SERVER_KEY_FILE_PASSWORD='szoscar55!123456' // 生成数据库服务证书时的子证书私钥密码
客户端配置步骤¶
SQL 交互工具¶
- 数据库安装目录的 bin/lib/oscarconfig.propertise ssl=true
- 数据库安装目录的 bin/resources/config.xml SECURE_SERVER 设置为 true
isql¶
- 将 ca.crl、ca.crt、ca.key、用户名.crt、用户名.key 拷贝至安装目录的 admin 下
- 将 用户名.crt、用户名.key 重命名为 isql.crt、isql.key
客户端连接步骤¶
SQL 交互工具¶
启动 sql 交互工具
依次输入 "主机地址"、"端口号"、"数据库名"、"用户名称"、"口令密码"
将 "是否安全通道" 勾选上后,点击 "使用可信通道"
选择 "用户证书文件"(sysdba.crt)、"用户密钥文件"(sysdba.key)、"CA证书文件"(ca.crt) 所在位置(默认在数据库安装目录的 bin/private),输入 "用户密钥密码"(用户证书私钥密码)
依次点击 "确定"、"连接"
isql¶
连接时指定 -z -K 参数(-z 使用安全连接登录数据库 -K 指定用户证书私钥密码)
例如: isql -Usysdba/szoscar55 -d OSRDB -p 2003 -z -Kszoscar55123456!