• 使用orapki生成证书,配置Oracle数据使用SSL和TLS进行数据库连接的TCP/IP配置==TCPS


    内容参考Oracle官方文档:

      https://oracle-base.com/articles/misc/configure-tcpip-with-ssl-and-tls-for-database-connections

      https://docs.oracle.com/cd/E11882_01/network.112/e40393/asoappf.htm#ASOAG9835

      orapki实用程序用于从命令行管理公用密钥基础结构(PKI)元素,例如钱包和证书撤销列表。这使您可以使用脚本自动执行这些任务。提供一种将PKI元素管理结合到脚本中的方法,可以自动执行许多维护PKI的日常任务

    客户端与服务器端基本环境:

    • 服务器端操作系统为CentOS 6.5_x86,安装并在运行着Oracle11g数据库,主机名为oracle.lushenle.com,IP地址为192.168.200.249,数据库实例为orcl
    • 客户端为Windows7操作系统,64位,安装了Oracle11g客户端,能正常连接服务器端的数据库,主机名为ASUS-PC

    主要配置步骤:

    • 服务器端配置Wallet和生成证书
    • 客户端配置Wallet和生成证书
    • 交换证书
    • 服务器端网络配置
    • 客户端网络配置
    • 测试连接

    服务器端配置Wallet和生成证书

      创建一个新的自动登录wallet

        $ mkdir -p /u01/app/oracle/wallet
        $ orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -auto_login_local

      创建一个自签名证书并将其加载到

        $ orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650

      检查wallet的内容,需要注意的是自签名证书既是用户也是可信证书

        $ orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123

      导出证书,以便稍后将其加载到客户的wallet中

        $ orapki wallet export -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -cert /tmp/`hostname`-certificate.crt

      检查证书是否已按预期导出

        $ cat /tmp/`hostname`-certificate.crt

    客户端配置Wallet和生成证书

      创建一个新的自动登录wallet

        c:>mkdir d:apporaclewallet

        c:>orapki wallet create -wallet "d:apporaclewallet" -pwd WalletPasswd123 -auto_login_local

      创建一个自签名证书并将其加载到wallet中

        c:>orapki wallet add -wallet "d:apporaclewallet" -pwd WalletPasswd123 -dn "CN=%computername%" -keysize 1024 -self_signed -validity 3650

      检查wallet的内容,需要注意的是自签名证书既是用户也是可信证书

        c:>orapki wallet display -wallet "d:apporaclewallet" -pwd WalletPasswd123

      导出证书,以便稍后将其加载到服务器中

        c:>orapki wallet export -wallet "d:apporaclewallet" -pwd WalletPasswd123 -dn "CN=%computername%" -cert d:\%computername%-certificate.crt

      检查证书

        c:>more d:\%computername%-certificate.crt

    交换证书 

      连接的每一方都需要相互信任,所以必须从服务器上将证书作为可信证书加载到客户端wallet中,反之亦然。

      远程连接上服务,使用xftp将证书下载到客户端,同时也把客户端证书上传到服务器,再将服务器证书加载到客户端wallet中

        c:>orapki wallet add -wallet "d:apporaclewallet" -pwd WalletPasswd123 -trusted_cert -cert d:oracle.lushenle.com-certificate.crt

      检查客户wallet的内容,注意服务器证书现在包含在可信证书列表中

        c:>orapki wallet display -wallet "d:apporaclewallet" -pwd WalletPasswd123

      将客户端证书加载到服务器钱包中

        $ orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -trusted_cert -cert /tmp/ASUS-PC-certificate.crt

      检查服务器wallet的内容,注意客户证书现在包含在可信证书列表中

        $ orapki wallet display -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123

    服务器网络配置

      在服务器上,将以下内容添加到“$ORACLE_HOME/network/admin/sqlnet.ora”文件中

     1 WALLET_LOCATION =
     2    (SOURCE =
     3      (METHOD = FILE)
     4      (METHOD_DATA =
     5        (DIRECTORY = /u01/app/oracle/wallet)
     6      )
     7    )
     8 
     9 SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ)
    10 SSL_CLIENT_AUTHENTICATION = FALSE
    11 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)

      将监听配置为接受SSL/TLS加密连接。编辑“$ORACLE_HOME/network/admin/listener.ora”文件,添加wallet信息以及TCPS内容

     1 SSL_CLIENT_AUTHENTICATION = FALSE
     2 
     3 WALLET_LOCATION =
     4     (SOURCE =
     5         (METHOD = FILE)
     6         (METHOD_DATA =
     7         (DIRECTORY = /u01/app/oracle/wallet)
     8         )
     9     )
    10 
    11 LISTENER =
    12     (DESCRIPTION_LIST =
    13         (DESCRIPTION =
    14         (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.lushenle.com)(PORT = 1521))
    15         (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    16         (ADDRESS = (PROTOCOL = TCPS)(HOST = oracle.lushenle.com)(PORT = 2484))
    17     )
    18     )
    19 
    20 ADR_BASE_LISTENER = /u01/app/oracle        

      

      重启监听 

        $ lsnrctl stop
        $ lsnrctl start

        ```好像是 lsnrctl reload 也可以的,不用stop再start```

      至此,服务器端已经配置完成

    客户端网络配置

      编辑“$ORACLE_HOME/network/admin/sqlnet.ora”文件,添加以内容

     1 WALLET_LOCATION =
     2     (SOURCE =
     3     (METHOD = FILE)
     4         (METHOD_DATA =
     5         (DIRECTORY = d:apporaclewallet)
     6      )
     7     )
     8 
     9 SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS)
    10 SSL_CLIENT_AUTHENTICATION = FALSE
    11 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA)

        ```确保客户端密码套件与服务器配置匹配```

      编辑“$ORACLE_HOME/network/admin/tnsnames.ora”文件,确保端口对应于在服务器上为SSL配置的端口,协议是TCPS

        

     1 orcl=
     2     (DESCRIPTION=
     3         (ADDRESS=
     4             (PROTOCOL=TCPS)
     5                 (HOST=192.168.200.249)
     6                     (PORT=2484)
     7     )
     8     (CONNECT_DATA=
     9         (SERVER=dedicated)
    10         (SID=orcl)
    11      )
    12     )                                            

      至此,客户端配置完成,可以连接测试

    测试连接

      c:>sqlplus sys/manunkind@//192.168.200.249:2484/orcl

      仅仅连接上去,并不能说明数据就是加密传输的,还需要进一步的验证,最简单的方式的把两种连接方式下的数据传输抓包、分析。这样才能说明问题。

     

     

      

  • 相关阅读:
    ThinkPHP6.0.5 验证码 遇到的坑 (验证失败)
    css已知宽高和未知宽高的居中定位
    有关CLR的初学小整理(可能理解不深刻,望大牛指出)
    关于CRC循环冗余校验的总结(C#)
    lesson 4 再谈继承多态,抽象类和接口
    Lesson 3
    Lesson 2
    lesson 1
    08_Spring实现action调用service,service调用dao的过程
    07_配置文件中决定接口的实现类
  • 原文地址:https://www.cnblogs.com/lushengle/p/8352916.html
Copyright © 2020-2023  润新知