前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用户身份验证的几种方式以及OpenStack认证方式的使用

用户身份验证的几种方式以及OpenStack认证方式的使用

作者头像
魏新宇
发布2018-04-08 16:41:30
3.7K0
发布2018-04-08 16:41:30
举报

笔者在加入VMware之前,做UNIX技术支持工作将近8年。由于UNIX服务器通常在数据中心内部,与外网隔离,因此用户身份认证通过比较简单。即密码验证。后来接触到VIEW产品,逐渐了解到多种的身份识别方式。加上前段时间研究了openStack,将学习的心得分享给大家。

广义上讲,用户身份认证并不仅限于领域。广义上的身份识别技术有如下几种:静态密码、动态密码(短信密码、动态口令牌)、令牌、USB KEY、数字证书、生物识别技术。

在以上几种认证方式中,我们IT人员在数据中心通常能够遇到的是:静态密码、动态口令牌、数字证书、令牌认证(token)。

在四种认证方式中,最常见的就是静态密码。如果要加强动态密码的安全性,通常是通过增加密码的复杂度,设置密码过期时间的方法。大多数linux操作系统默认也是禁止root用户的ssh或telnet权限的。

如下图,在Linux中设置密码策略(/etc/login.defs).

动态口令牌也是一种认证方式,如最著名的RSA就是一种,通过输入个人的PIN Code,生成随机密码。

令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

数字证书认证方式也是我们常见的。“数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(CertificateAuthority)中心发行的,人们可以在网上用它来识别对方的身份。”

如果想了解证书认证,就需要了解两种加密方式:

对称加密和非对称加密。对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。

我们经常用到的ssh就是非对称加密。我将两种加密方式进行对比,如下:

本小节提到的数字证书(又称数字签名)通常是基于对称对加密的。由此,我们引入一个新的名词,CA。

数字证书认证中心(CertficateAuthority,CA)是整个网上电子交易安全的关键环节。它主要负责产生、分配并管理所有参与网上交易的实体所需的身份认证数字证书。每一份数字证书都与上一级的数字签名证书相关联,最终通过安全链追溯到一个已知的并被广泛认为是安全、权威、足以信赖的机构。CA必须是各行业各部门及公众共同信任的、认可的、权威的、不参与交易的第三方网上身份认证机构。

CA服务器可以是第三方权威机构的,也可以是企业内部自行搭建的。比如:VeriSign公司,就是著名的CA权威机构。另外一个著名的证书认证机构就是---微软,通过Windows AD域实现。AD的功能十分强大,有三个功能:AD = Ldap + kerberos + CA。

如果一个企业的证书,想被权威机构认证,是需要支付一定费用的。被认证的好处是,当客户通过网页访问该金融机构时,该网址是可信的。否则,在互联网应用中,如何确认彼此的身份?

在数据中心内部,我们通常采取自签名的方式,也就是自己认证自己。

数字证书的颁发原理:

用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。同时,这个被认证中心认证的公钥信息,通常被主流浏览器默认加载,这样一般客户上网访问这个网址的时候,就不会被提示为不被信任的网站。

我们可以查看IE默认信任的证书:

所以从中我们也可以看出,正是由于微软在操作系统领域中占有垄断地位,因此,在浏览器市场也处于垄断地位。与浏览器先关的互联网应用,想被认证,就必须要得到IE的认可。

新装好的vcenter,我们通过webclient访问:

如果想继续访问,我们必须要选择添加例外,然后获取证书,再确认安全例外:

这个过程,实际上我们就把vcenter的根证书下载到本地,并装在到浏览器中,然后,就可以正常访问了:

而在这个过程中,我们导入的就是VC的公钥。

谈到这个问题,我举个很有意思的例子:大家一定有过通过12306网站买票的经历,那么下面的图片就一定不会陌生:

首页提示“为了保障您的顺畅购票,请下载安装根证书”。

然后,我们会点击安装:

然后倒入证书:

那么大家有没有想过,为什么访问12306需要倒入其根证书,而访问ICBC的网页不会呢?

原因就在于,12306的根证书没有被CA权威机构所认证,当用户通过终端访问该网站时,如果不倒入该证书,那么这个网站将会被标示成不被信任的网站。

而对于金融机构的网站,如果被标示该网址不会信任,请问大家还敢访问并进行金融交易么?

接下来,我看看看Openstack的内部组件的认证方式。

先看一下OpenStack的架构:

在这个架构中“keystone”就是负责用户认证的。可以说是Openstack的灵魂。手工用命令行安装过openstack组件(不是用packstack自动应答脚本)的朋友一定知道:在安装单独安装openstack所有组件的时候,都需keystone创建对应组件的用户,每个模块都必须与keystone进行通讯。

例如,安装openstack中neutron的部分步骤如下:

keystone user-create --name neutron --pass xxxx

keystone user-role-add --user neutron --role admin--tenant services

yum install openvswitch openstack-neutronopenstack-neutron-ml2 openstack-neutron-openvswitch

Openstack每个组件的认证,默认是通过token认证的(当然也可以通过密码)。因此,手工安装keystone的步骤中,会有这么一步:

export SERVICE_TOKEN=$(openssl rand -hex 10)

exportSERVICE_ENDPOINT=http://${HOSTNAME}:35357/v2.0

echo$SERVICE_TOKEN > /root/ks_admin_token

# cat /root/ks_admin_token

6f438ff88435dab284a9

而“6f438ff88435dab284a9“这串数字,实际上就是token,它用于认证admin用户。我们可以把它添加到keystonerc_admin配置文件中,这样我们souce这个配置文件,就可以访问keystone的服务了:

source /root/keystonerc_admin

keystone tenant-list

在openstack中,还有一个非常重要的概念:AMQP, AdvancedMessageQueuingProtocol,即高级消息队列协议.Openstack各个组件之间的通讯,是通过AMQP实现的。这样做的好处,可以使各个组件之间是松耦合的关系。比如说,搭建一个openstack,只搭建必要的keystone,nova等,不搭建swift,这是没问题的。

而AMQP与各个组件(各个组件作为AMQP的client),之间的认证,是通过CA进行认证的,也就是自签名认证。目前AMQP使用的数据库是rabbit MQ,下面截取部分命令:

产生证书数据库(AMQP Server):

# certutil -N -d/etc/pki/tls/qpid/ -f /etc/qpid/qpid.pass

# certutil -S -d /etc/pki/tls/qpid/ -n $HOSTNAME -s"CN=$HOSTNAME" -t "CT,," -x -f /etc/qpid/qpid.pass -z/usr/bin/certutil

S:签发证书 -d 证书文件目录

-s subject -t 设置信任证书的属性

-x 自签发证书

下面几条命令是获取CA配置文件并进行签名:

#wget openssl.cnf ## CA configrationfile

#openssl req -x509 -config openssl.cnf -newkey rsa:2048-days 365 -out cacert.pem -outform PEM -subj /CN=MyTestCA/ -nodes ## CA 'spublic key and private key

#openssl x509 -in cacert.pem -out cacert.cer -outformDER

该证书被签发以后,就可以分发给AMQP client,用于组件之间的通讯了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
分布式身份
腾讯云分布式身份TDID(Tencent Cloud Decentralized Identity)为可信数字身份和数据交换服务提供基础设施。TDID以区块链为底层,提供了一种分布式生成、持有和验证身份标识符 DIDs(Decentralized Identiflers) 和身份数据VCs(VerifableCredentials)的机制,使您能以加密安全、保护身份隐私的方式,在互联网上可信地表达和应用现实世界各种类型的身份。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档