配置 Oracle 数据库服务器

使用 Oracle Wallet Manager 和 orapki 命令之类的 Oracle 工具可在 Oracle 数据库服务器上配置信任库和密钥库。

关于此任务

对于测试用途,可以使用以下命令设置自签名证书权限、信任库和密钥库:
cd c:\temp
mkdir authority
mkdir server
mkdir client

自签名证书权限

orapki wallet create -wallet ./authority -pwd=ThePwd12

orapki wallet add -wallet ./authority -dn "CN=authority, C=US" -keysize 2048 
-self_signed -validity 3650 -pwd=ThePwd12

orapki wallet export -wallet ./authority -dn "CN=authority, C=US" -cert 
./authority/CA.cer -pwd=ThePwd12

发出 keytool 命令以将 CA 证书导入到分派器信任库中时,使用权限目录中的 CA.cer 文件作为可信证书。

用于服务器认证的信任库

orapki wallet create -wallet ./server -auto_login -pwd=ThePwd12

orapki wallet add -wallet ./server -dn "CN=server, C=US" -keysize 2048 
-pwd=ThePwd12

orapki wallet export -wallet ./server -dn "CN=server, C=US" -request 
./server/creq.cer -pwd=ThePwd12

orapki cert create -wallet ./authority -request ./server/creq.cer -cert 
./server/signed.cer -validity 3650 -pwd=ThePwd12

orapki wallet add -wallet ./server -trusted_cert -cert ./authority/CA.cer 
-pwd=ThePwd12

orapki wallet add -wallet ./server -user_cert -cert ./server/signed.cer 
-pwd=ThePwd12

用于客户机认证的信任库

orapki wallet create -wallet ./client -auto_login -pwd=ThePwd12

orapki wallet add -wallet ./client -dn "CN=client, C=US" -keysize 2048 
-pwd=ThePwd12

orapki wallet export -wallet ./client -dn "CN=client, C=US" -request 
./client/creq.cer -pwd=ThePwd12

orapki cert create -wallet ./authority -request ./client/creq.cer -cert 
./client/signed.cer -validity 3650 -pwd=ThePwd12

orapki wallet add -wallet ./client -trusted_cert -cert ./authority/CA.cer 
-pwd=ThePwd12

orapki wallet add -wallet ./client -user_cert -cert ./client/signed.cer 
-pwd=ThePwd12

Oracle 网络配置

在 Oracle 数据库服务器上配置以下两个文件来启用 SSL:

  • listener.ora
  • sqlnet.ora

这些文件位于 Oracle 主目录的 network\admin 目录中。 可以使用 Oracle Net Manager 或文本编辑器来编辑这些文件。

listener.ora:

SSL_VERSION = 3.0
SSL_CLIENT_AUTHENTICATION = FALSE

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = myDir)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myHost)(PORT = nonSSLPort))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCPS)(HOST = myHost)(PORT = sslPort))
    )
  )

sqlnet.ora:

SQLNET.AUTHENTICATION_SERVICES= (TCPS, NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES)

SSL_VERSION = 3.0
SSL_CLIENT_AUTHENTICATION = FALSE

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = myDir)
    )
  )

其中:

myDir
Oracle 数据库服务器上信任库的目录位置。 例如,C:\temp\server。
myHost
服务器主机名。
nonSSLPort
非 SSL 通信端口(TCP 协议)。 例如,1521
sslPort
SSL 通信端口(TCPS 协议)。 例如,2484