SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通讯提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络链接进行加密。Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程当中不会被截取及窃听。通常通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器便可支持SSL。python
SSL协议提供的安全通道有如下三个特性:web
SSL证书依据功能和品牌不一样分类有所不一样,但SSL证书做为国际通用的产品,最为重要的即是产品兼容性(即证书根预埋技术),由于他解决了网民登陆网站的信任问题,网民能够经过SSL证书轻松识别网站的真实身份。SSL证书分为以下种类:算法
上述三种证书存在一些差异,这里进行简单叙述:浏览器
HTTPS(Hypertext Transfer Protocol Secure)安全超文本传输协议。它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操做,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的彻底套接字层(SSL)做为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通讯。)SSL使用40 位关键字做为RC4流加密算法,这对于商业信息的加密是合适的。https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL。安全
操做前须要建立桶bucket1,并将权限设置成公开访问,为了验证的直观性,建议同时上传多个对象,如obj1,obj2...而且将对象的权限也设置成公开访问,这样便于后续采用浏览器进行访问。服务器
首先须要利用openssl生成根证书,之后的服务器端证书或者客户端证书都用他来签发,能够创建多个根证书,就像对应不一样的公司同样。网络
#生成根证书的私钥,参数des3是加密算法 openssl genrsa -des3 -out server.key 1024 #生成服务器端证书签名请求文件(csr文件),利用私钥生成一个根证书的申请,通常证书的申请格式都是csr。因此私钥和csr通常须要保存好 openssl req -new -key server.key -out server.csr cp server.key server.key.orig #去除密钥文件的保护密码,每次读取key文件时能够不须要口令 openssl rsa -in server.key.orig -out server.key #自签名,有效期10年 openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt cp server.crt server.pem cat server.key >> server.pem
注:在作第二步时,存在common name(CN)选项的设置,为了与AWS S3的域名访问规则一致,能够设置成
*.exampletest.com
,其余的选项可随意。frontend
须要使用软链接,不然会出错,可在log文件中查看出错信息。测试
ln -s /lib64/libssl.so.1.0.1e /usr/lib64/libssl.so ln -s /lib64/libcrypto.so.1.0.1e /usr/lib64/libcrypto.so
这里须要在ceph.conf
文件中配置rgw_dns_name
和rgw_frontends
两个参数信息。网站
[client.rgw.rgw1] host = ceph1 rgw_dns_name = exampletest.com rgw_frontends = "civetweb port=443s ssl_certificate=/etc/ceph/private/server.pem"
注:在
rgw_frontends
参数中须要配置3.1节中生成的ssl证书server.pem的路径。
在rgw实例所在的主机的etc/hosts
下加入如下域名映射:
192.168.141.142 bucket1.exampletest.com
在用浏览器访问的主机的hosts文件下添加:
192.168.141.142 bucket1.exampletest.com
下面对网站的访问以IE浏览器为例
无证书访问
浏览器中直接输入网址https://bucket1.exampletest.com,能够正确访问,而且列出桶bucket1中内容,可是地址栏会提示证书错误的字样,这是因为未导入证书所致。
有证书访问
首先导入证书。
浏览器地址栏输入网址https://bucket1.exampletest.com 时会出现锁形标志,表示安全访问连接,而且可以正确列出桶bucket1中的内容。
为方便测试,这里的证书是自签名的,不是机构颁发。因此在sdk中须要经过参数设置来绕过证书的检查。这里以python
为例,将与使用http
访问方式不一样的两处地方单独作了说明,以下:
url = 'https://192.168.141.142' s3 = boto3.client('s3', verify=False, #只须要将此参数设置成False endpoint_url=url, aws_access_key_id=access_key, aws_secret_access_key=secret_key )
经过上述修改后就能够正常操做。