IceSSL使用

  • Post author:
  • Post category:其他


==========【IceSSL使用的证书生成方法.txt】======================

————使用iceca脚本生成CA———-

在执行脚本前先设置环境变量

export ICE_CA_HOME=/home/mayjie/certs   #指向证书存放目录

export PYTHONUNBUFFERED=1                #设置python的标准输出为无缓冲

然后cd /home/mayjie/certs目录

1、初始化新的root CA

iceca init [–no-password] [–overwrite]

执行成功,会生成两个主要文件ca_cert.pem(CA证书) 和 req.cnf

注意:CA subject name在自定义设置时country name的长度不能超过2位,否则会失败。

2、生成新的证书请求

iceca request [–overwrite] [–no-password] file common-name   #file为自定义前缀,common-name也为自定义

举例: iceca request node “IceGrid Node”

执行成功,会生成两个文件file_key.pem(密钥文件) 和 file_req.pem

3、签署证书请求

iceca sign –in req –out cert [–ip ip –dns dns]    #req为上一步生成的file_req.pem,cert为自定义文件名

举例:iceca sign –in node_req.pem –out node_cert.pem

执行成功,生成名字为cert的文件(node的证书)

4、转换证书(Java和.NET专用)

iceca import [–overwrite] [–key-pass password] [–store-pass password]

[–java alias cert key keystore] [–cs cert key out-file]

举例:

iceca import –java mycert node_cert.pem node_key.pem cert.jks     #生成cert.jks文件,用于java

iceca import –cs node_cert.pem node_key.pem cert.pfx            #生成cert.pfx文件,用于.NET

——————————–

全部完成后,可将*_req.pem文件删除

另外,上述过程可以写成一个python脚本。

==================================================

==================================================

==========【IceSSL的使用.txt】======================

【IceGrid基础上加入IceSSL安全通信功能】

1、SSL证书

IceSSL使用底层的OpenSSL完成SSL会话握手,通信双方需提供证书。在ICE中使用iceca脚本生成证书颁发机构(CA)和各种证书文件。

使用iceca详见说明【IceSSL使用的证书生成方法.txt】

2、需要证书的通信方

可以为注册服务器icegridregistry、节点icegridnode、应用服务程序server、客户端client配置证书。

出于安全考虑,还可以为注册服务器、节点的证书以及根CA证书增设密码。

所有节点可以共用同一个证书,也可以有各自的证书。注册服务器等也如此。

3、需要ssl会话的通信

应用服务程序与注册服务器最好使用ssl连接。

主从注册服务器之间、注册服务器与节点之间最好使用ssl连接。

而客户端与注册服务器使用tcp连接即可(客户端只使用了注册服务器的定位间接代理功能情况下)。

4、配置文件通用调整

以下内容为需要SSL会话的通信方需要配置的基本属性,具体值需要调整:

Ice.Plugin.IceSSL=IceSSL:createIceSSL    #创建IceSSL

IceSSL.DefaultDir=/opt/certs          #指定证书和密钥所在目录,需调整

IceSSL.CertFile=registry_cert.pem      #证书,需调整

IceSSL.KeyFile=registry_key.pem        #密钥,需调整

IceSSL.CertAuthFile=ca_cert.pem        #可信任的CA证书,一般不需调整

IceSSL.Password=password            #密钥文件的密码,有则设置,无则删除

5、配置文件特殊调整

【注册服务器配置文件】

各个端点配置为ssl端点,如下:

IceGrid.Registry.Client.Endpoints=ssl -p 12345:tcp -p 12346        #保留tcp端点,允许客户端用tcp连接注册服务器

IceGrid.Registry.Server.Endpoints=ssl

IceGrid.Registry.Internal.Endpoints=ssl

如果允许管理客户端icegridadmin在不用证书情况下依然可以进行ssl连接到注册服务器,则需设置如下属性:

IceSSL.VerifyPeer=1

另外,如果有从注册服务器,从注册服务器的配置文件中属性Ice.Default.Locator应调整为使用ssl端点。

Ice.Default.Locator=DemoIceGrid/Locator:ssl -h 192.168.0.239 -p 12345:ssl -h 192.168.0.25 -p 12345

【节点配置文件】

节点端点调整为ssl,如下

IceGrid.Node.Endpoints=ssl

指向注册服务器的代理调整为使用ssl,如下

Ice.Default.Locator=DemoIceGrid/Locator:ssl -h 192.168.0.239 -p 12345:ssl -h 192.168.0.25 -p 12345

【应用服务程序配置文件】

应用服务程序的配置文件在使用IceGrid情况下为*.xml文件,但属性配置大同小异。加入如:

<properties id=”Secure-Ice.Admin”>

<property name=”Ice.Plugin.IceSSL” value=”IceSSL:createIceSSL”/>

<property name=”IceSSL.CertAuthFile” value=”ca_cert.pem”/>

<property name=”IceSSL.CertFile” value=”server_cert.pem”/>

<property name=”IceSSL.KeyFile” value=”server_key.pem”/>

<property name=”IceSSL.DefaultDir” value=”certs”/>

</properties>

另外,如需要客户端与服务程序使用ssl通信,调整xml中适配器的端点为ssl即可,如

<adapter name=”Hello” endpoints=”ssl” replica-group=”ReplicatedHelloAdapter”/>

【客户端配置文件】

如果客户端与应用服务程序使用ssl通信,则需要为客户端生成证书,并在配置文件中加入之前说明的基本属性即可。

特别说明,其中的Ice.Default.Locator属性依然使用注册服务器的tcp端点即可。

【管理客户端icegridadmin的配置文件】

使用管理客户端部署应用服务程序时,如果使用ssl连接,但不提供证书,做如下调整:

Ice.Default.Locator=DemoIceGrid/Locator:ssl -h 192.168.0.239 -p 12345:ssl -h 192.168.0.25 -p 12345

#

# SSL Configuration

#

IceSSL.DefaultDir=certs

# C++ configuration

Ice.Plugin.IceSSL=IceSSL:createIceSSL

IceSSL.CertAuthFile=ca_cert.pem

6、其他说明

至此,配置完成。以下为额外的属性说明。

(1)SSL缺省为RSA加密,如要使用其他加密算法:

IceSSL.Ciphers=DEFAULT:DSS   #DSA加密

(2)IceSSL.TrustOnly系列属性,是在底层SSL验证通过后,IceSSL加入的更上一层验证,相当于信任/拒绝列表

IceSSL.TrustOnly    #发出或接收连接请求时,信任/拒绝的对端

IceSSL.TrustOnly.Client    #发出连接请求时,可信任或拒绝的对端

IceSSL.TrustOnly.Server    #接收连接请求时,可信任或拒绝的对端

IceSSL.TrustOnly.Server.AdapterName    #指定适配器在接收连接请求时,可信任或拒绝的对端

(3)IceSSL.Trace.Security=1   #开启SSL安全连接跟踪功能

转载至:

http://blog.csdn.net/pj81102/article/details/5872046