ICESSL使用备忘
1、任何ICE的程序如果试图使用SSL的安全连接,那么对应的应用必须加载SSL插件
2、配置程序在启动过程中加载SSL插件:
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=/opt/certs
IceSSL.CertFile=pubkey.pem
IceSSL.KeyFile=privkey.pem
IceSSL.CertAuthFile=ca.pem
IceSSL.Password=password
Ice.Override.Secure=1
3、程序中获取ssl插件对象:
Ice::PluginManagerPtr pluginMgr = communicator->getPluginManager();
Ice::PluginPtr plugin = pluginMgr->getPlugin("IceSSL");
IceSSL::PluginPtr sslPlugin = IceSSL::PluginPtr::dynamicCast(plugin);
4、设置个性化的ssl校验机制:
class Verifier : public IceSSL::CertificateVerifier
{
public:
bool verify(const IceSSL::NativeConnectionInfo& info)
{
if (!info.nativeCerts.empty())
{
string dn = info.nativeCerts[0].getIssuerDN();
transform(dn.begin(), dn.end(), dn.begin(), ::tolower);
if (dn.find("zeroc") != string::npos)
{
return true;
}
}
return false;
}
};
sslPlugin->setCertificateVerifier(new Verifier);
5、在NativeConnectionInfo中包含了对应的SSL证书信息,其结构如下:
class NativeConnectionInfo : public ConnectionInfo
{
public:
std::vector<CertificatePtr> nativeCerts;
};
class Certificate : public IceUtil::Shared
{
public:
Certificate(X509*);
static CertificatePtr load(const string&);
static CertificatePtr decode(const string&);
bool operator==(const Certificate&) const;
bool operator!=(const Certificate&) const;
PublicKeyPtr getPublicKey() const;
bool verify(const PublicKeyPtr&) const;
string encode() const;
bool checkValidity() const;
bool checkValidity(const IceUtil::Time&) const;
IceUtil::Time getNotAfter() const;
IceUtil::Time getNotBefore() const;
string getSerialNumber() const;
DistinguishedName getIssuerDN() const;
vector<pair<int, string> > getIssuerAlternativeNames();
DistinguishedName getSubjectDN() const;
vector<pair<int, string> > getSubjectAlternativeNames();
int getVersion() const;
string toString() const;
X509* getCert() const;
};
6、动态密码的设置(设置属性Ice.InitPlugins=0)
class PasswordPrompt : public IceUtil::Shared
{
public:
virtual std::string getPassword() = 0;
};
Ice::PluginManagerPtr pluginMgr = communicator->getPluginManager();
Ice::PluginPtr plugin = pluginMgr->getPlugin("IceSSL");
IceSSL::PluginPtr sslPlugin = IceSSL::PluginPtr::dynamicCast(plugin);
sslPlugin->setPasswordPrompt(new Prompt);
pluginMgr->initializePlugins();
7、证书的申请创建(注意设置环境变量ICE_CA_HOME)
python iceca init [--no-password] [--overwrite]
python iceca request [--overwrite] [--no-password] file common-name [email]
python iceca sign [--overwrite] --in <req> --out <cert> [--ip <ip> --dns <dns>]
ICESSL使用备忘相关推荐
- vim的一些快捷键,备忘
vim的一些快捷键,备忘 快捷键 作用 ctrl+g ...
- 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单
向AI转型的程序员都关注了这个号☝☝☝ 以下是关于神经网络.机器学习.深度学习以及大数据学习的备忘单,其中部分内容和此前发布的<资源 | 值得收藏的 27 个机器学习的小抄>有所重复,大家 ...
- 机器学习项目的备忘清单!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Harshit Tyagi,编译:机器之心 机器学习项目中含有众多 ...
- 备忘:C语言void *
由于研究一段代码的时候,看到了 void *.故此进行了学习. 看了 http://www.doc88.com/p-894907672962.html 的说明,感觉写得太好了,已无话可说. 故此备忘 ...
- [译] Kotlin 标准方法备忘
原文地址:Kotlin Standard Functions cheat-sheet 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/go ...
- Nancy之结合TinyFox调试备忘
原文:Nancy之结合TinyFox调试备忘 最近把一个小项目的数据库换成MongoDB,同时用了MongoRepository 这个开源组件来对数据进行操作. 通过NuGet安装之后,它会自动在we ...
- CSP浏览器安全策略备忘
挺久之前过了一遍CSP的安全策略,很多人把它喻为XSS攻击的终结者,因为这种策略不再像传统只靠各种正则和特征匹配来识别跨站攻击Payload,而是直接从协议层把一些存在安全隐患的用法默认给干掉了,把同 ...
- Cheat—— 给Linux初学者和管理员一个终极命令行备忘单
当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助.还有一些其它的选择可能包括像'help','whereis'和'what ...
- 简单备忘一下Linux下的wget和curl如何使用http proxy
简单备忘一下Linux下的wget和curl如何使用http proxy wget -e "http_proxy=porxyhost:port" www.baidu.com cur ...
最新文章
- 站立会议 ---01
- 听说你想从事中间件开发?
- Python基础教程:括号()[]{}详解
- zabbix 安装_Zabbix的WEB安装与配置
- 工厂模式 + 反射 ?= 灵活多变的数据库
- 积累命令、用户、正则表达式
- 【C/C++】与const有关的指针类型赋值
- FormData对象提交表单及上传图片/文件
- 三屏版知识竞赛类软件的开发需求分析及技术构思
- 4个空格 tab vetur_Python成为专业人士笔记–程序行空白及tab缩进的作用
- [Erlang 0017]Erlang/OTP基础模块 proc_lib
- 怎么修改PDF文件内容
- 2016年计算机考研大纲,2016考研计算机大纲解析
- 分类流控qdisc之htb
- 自考2018版《管理经济学》第一章导论——思维导图
- Eclipse SVN:E200030:There are unfinished transactions detected
- Error: docker-ce conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_64
- 波特率、数据传输速率和带宽的关系(转)
- 罗永浩将举办“老人与海”黑科技发布会;京东正式宣告:全面向技术转型;英特尔因CPU短缺向PC厂商道歉 | EA周报...
- 【量化】量化交易入门系列2:经典的量化交易策略(上)
热门文章
- 【Spark ML】第 1 章:机器学习简介
- 【书摘】The Joshua tree epiphany
- VIA图像标注系统汉化版
- 利用手动Ghost工具手动安装系统(U盘)
- 《Linux命令行与shell脚本编程大全》第十三章 学习笔记
- 【Solidity】8. 杂项 - 深入理解Solidity
- UI设计:使用PS绘制拟物化图标
- 每周分享第 21 期
- javaSE--基础六(idea.debug,进制转换,二维数组)
- matlab app设计步骤_1.1数学建模与MATLAB–MATLAB入门