IceSSL使用

==========【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

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页