初识RPC中间件zeroC ICE工具之iceca

zeroc-icecertutils是什么?

zeroc-icecertutils全称zeroc Ice Certificate Utilities,其中包括iceca命令行程序和一个小型Python库,用于为Ice客户端或服务器创建证书。
该工具依赖于PyOpenSSL来创建证书。Java KeyStore文件是用keytool实用程序创建的。创建BouncyCastle KeyStore文件需要Java BouncyCastle提供支持。
其中,

  • PyOpenSSL是一个封装了openssl的python模块,使用它可以方便地进行一些加解密操作。
  • JAVA KeyStore是java的密钥库,用来进行通信加密用的,比如数字签名;还有用来保存密钥对的,比如公钥和私钥。一般多用作银行接口相关,保证通讯安全。
  • keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。
  • BouncyCastle是一个提供了很多哈希算法和加密算法的第三方库。它提供了Java标准库没有的一些算法,例如,RipeMD160哈希算法。

zeroc-icecertutils如何安装?

安装zeroc-icecertutils使用pip工具

pip install "zeroc-icecertutils >= 1.0.4"

iceca工具是什么?

iceca工具提供了一个小型证书颁发机构,允许创建与Ice客户机和服务器一起使用的证书。支持初始化CA数据库、创建证书和导出证书等命令。
iceca help info
通过以下命令可以查看相对应的命令帮助信息。

iceca init
ineca create
iceca list
iceca show
iceca export

python 模块

#导入模块
import IceCertUtils

#
# 创建IceCertUtil factory
#
factory = IceCertUtils.CertificateFactory(cn = "My CA")

#初始化证书数据库,保存为PEM、DER、JKS格式
factory.getCA().save("cacert.pem").save("cacert.der").save("cacert.jks")

#
# 创建client证书
#
client = factory.create("client", cn = "Client")

# 保存证书为 PKCS12 格式
client.save("client.p12")

# 将客户端证书保存为JKS格式,并将CA证书包含在别名为“cacert”的keystore中。
client.save("client.jks", caalias="cacert")

#
# 创建服务器证书,包括IP和DNS主题备选名称。
#
server = factory.create("server", cn = "Server", ip="127.0.0.1", dns="server.foo.com")

# 保存证书为 PKCS12 格式
server.save("server.p12")

# 保存证书为 JKS 格式
server.save("server.jks", caalias="cacert")

# 将客户端证书和服务端证书保存为BKS格式。如果不支持BKS,则会抛出异常
#
try:
    client.save("client.bks", caalias="cacert")
    server.save("server.bks", caalias="cacert")
except Exception as ex:
    print("warning: couldn't generate BKS certificates:\n" + str(ex))

factory.destroy()

shell脚本自动创建证书

#!/usr/bin/expect

spawn bash -c "iceca init --overwrite"
expect {
"y/n)" {send "y\n";exp_continue}
"passphrase" {send "123456\n";exp_continue}
}

spawn bash -c "iceca create --ip=192.168.0.12 server"
expect {
"passphrase" {send "123456\n";exp_continue}
}


spawn bash -c "iceca export --password 123456 --alias srever /home/john/server.p12"
expect {
"passphrase" {send "123456\n";exp_continue}
}

shell脚本自动创建证书-进阶

#!/usr/bin/expect

set passwd "123456"
set path "/home/john/certs"

array set CA_IP {
"server" "192.168.0.100"
"client" "192.168.0.200"
}

send_user "certificate database initial,waitting~\n"
spawn bash -c "iceca init --overwrite"
expect {
"y/n)" {send "y\n";exp_continue}
"passphrase" {send "$passwd\n";exp_continue}
}


foreach key [array names CA_IP] {
	send_user " --- create ca name=$key, ip=$CA_IP($key) ~\n"
	spawn bash -c "iceca create --ip=$CA_IP($key) $key"
	expect {
	"passphrase" {send "$passwd\n";exp_continue}
}
send_user " --- export ca name=$key, ip=$CA_IP($key) ~\n"
spawn bash -c "iceca export --password $passwd --alias $key $path/$key.p12"
expect {
"passphrase" {send "$passwd\n";exp_continue}
}
}

拓展链接

zeroc-icecertutils GitHub
一文彻底搞懂加密、数字签名和数字证书,看不懂你打我!

猜你喜欢

转载自blog.csdn.net/Tom942067059/article/details/127286767
今日推荐