返回 登录
1

IBM Bluemix 中使用命令行配置自定义域名以及 SSL 详解

自定义域名(Custom Domain)简介
在 Bluemix 上创建 CloudFoundry 应用的时候,云平台赋予的默认域名是 mybluemix.net,但是对于用于商业用途的应用来说,默认的域名并不是最好的选择,客户往往需要使用一些个性化域名。
而 Bluemix 给用户提供了非常便捷的方式去创建并使用自定义域名,进而作为应用访问的 url。用户仅需要三步就可以实现:首先用户需要在公共 DNS 服务器上注册一个自定义域名,然后把此域名和 Bluemix 系统域名做映射,最后将自定义域名配置在 Bluemix 指定的 Organization 中。

需要做的准备工作:
基于本文主要针对如何使用命令行来创建自定义域名,在创建自定义域名之前需要确保在客户端预先安装以下工具:
安装Cloud Foundry CLI
Cloud Foundry CLI 是Cloud Foundry的官方命令行客户端
安装Bluemix CLI
安装Git
安装Python

第 1 步:在 Bluemix 中创建自定义域名并绑定到相应的应用上
登录到 Bluemix, 注意使用参数’-a’来指定 api 的 endpoint, 因为每个 Bluemix 环境的 endpoint 是不一样的。
bx login -a https://api.ng.bluemix.net -u EMAIL_ADDRESS -o ORG_NAME -s SPACE_NAME
图 1.登录到 Bluemix
图片描述
然后在 Bluemix 指定的 Organization 中创建新的自定义域名,注意该自定义域名 Bluemix 中必须是唯一的。
bx cf create-domain ORG_NAME CUSTOM_DOMAIN_NAME
图 2.创建新的自定义域名
图片描述
最后在 Bluemix 中给指定的应用设置其对应的自定义域名
bx cf map-route APP_NAME CUSTOM_DOMAIN_NAME
图 3.给应用绑定自定义域名
图片描述
上述步骤全部成功后,可以使用下面的命令查看已经上传的应用以及它对应的 urls,可以看到新的自定义域名已经成功和该应用绑定在一起。
bx cf apps
图 4.查询显示应用绑定的自定义域名
图片描述

第 2 步:在公共 DNS 服务器上申请并配置自定义域名
虽然 Bluemix 中已经配置好了自定义域名,但是这个域名在外网依然不能被大家访问,所以需要在公共域名服务器中申请或购买该域名,如本文中的域名”bmlabs.cn”。其次需要在域名服务器中定义完整域名和 Bluemix 系统域名的映射关系,即在域名服务器中给自定义子域名设置 CNAME,如本文中的子域名”cdd”。子域名对应的记录值是 Bluemix 中的 secure endpoint。
图 5.在公共 DNS 服务器上申请配置自定义域名
图片描述
尤其需要注意的是不同的 Bluemix 环境对应的 secure endpoint 是不同的:
US-SOUTH: secure.us-south.bluemix.net
EU-GB: secure.eu-gb.bluemix.net
AU-SYD: secure.au-syd.bluemix.net
EU-DE: secure.eu-de.bluemix.net

第 3 步:对自定义域名配置 SSL 数字证书
SSL 的作用和重要性介绍
虽然用户已经给应用设置好了自定义域名,但是最终用户默认使用的是 http 协议访问该网站,浏览器和服务器之间采用的是明文传输,也就是说最终用户的机密信息和敏感数据随时都可能被泄露、窃取、篡改。
SSL 是网络加密传输协议,安装 SSL 数字证书之后,最终用户可通过https访问网站,SSL 可以对客户端浏览器到服务器的访问通道加密,实现高强度双向加密传输,从而保证了用户的敏感信息、重要数据的真实性和安全性。所以客户在针对商业应用创建了自定义域名后,还可以通过添加 SSL 证书来保证该网站的安全性和可信度。
Let’s Encrypt介绍
安全可信的 SSL 证书需要像 CA(证书授权颁发中心)机构申请,下面向大家介绍 Let’s Encrypt,它提供了免费、自动化、开放的证书签发服务。它是由来自美国加利福尼亚的一个公益组织 ISRG(Internet Security Research Group)即互联网安全研究小组来提供的服务。
bluemix-letsencrypt介绍
申请网站的 SSL 证书一般需要如下步骤:
生成证书请求文件 CSR
选择 CA 机构申请 SSL 证书
将 CSR 文件提交给 CA 机构认证
获取 SSL 证书并安装
Bluemix 提供了一个基于 Let’s Encrypt 的简便方案帮助用户申请免费的 SSL 证书,即 bluemix-letsencrypt。它是一个在 Bluemix 上给 CloudFoundry 应用配置 SSL 证书的脚本。用户使用这个脚本可以快速创建免费的 SSL 证书并且上传绑定到 Bluemix 指定的应用中。
首先使用如下链接下载或克隆 bluemix-letsencrypt Git 项目到本地
git clone git@github.com:ibmjstart/bluemix-letsencrypt.git
图 6.克隆 bluemix-letsencrypt Git 项目到本地
图片描述
将文件 domains.yml.example 重命名为 domains.yml, 并修改 domains.yml 中的内容,输入自己的邮件地址(可以用于收取证书更新的提醒),并且提供自定义域名(本文中的自定义域名是”bmlabs.cn”)和其对应的主机名(本文中的主机名是”cdd”)。
图片描述
注意在测试过程中,建议设置 staging 的值为 true,去使用 Let’s Encrypt 的 Staging 环境测试进而减少其速率限制。
最后运行下列 Python 脚本,它会首先部署一个 bluemix-letsencrypt 应用到 bluemix 上去生成 SSL 证书,然后自动上传到 bluemix 指定的应用所对应的自定义域名上。
python setup-app.py
图 7.运行 python 脚本生产证书并绑定应用
图片描述

图片描述

图片描述

第 4 步:测试使用自定义域名访问应用
使用 http 方式访问应用:
http://cdd. bmlabs.cn
图 8.使用 http 方式测试访问应用
图片描述
使用 https 方式访问应用,可以在地址栏左边看到一个绿色锁的图案,表明了目前正采用 SSL 机密会话的保护机制。如果想了解 SSL 证书的详细信息,只需要点击该绿色锁的标记即可。
https://cdd. bmlabs.cn
图 9.使用 https 方式测试访问应用
图片描述

常见问题解答
用户在 Bluemix 上创建并设置好了自定义域名,而且也上传了 SSL 证书,但是在访问应用的时候提示”不安全”,并且查看证书显示访问的域名是 Bluemix 默认的域名”*.mybluemix.net”而不是自定义域名。
图片描述
原因:
用户在公共 DNS 中配置 CNAME 时,子域名对应的记录指定了不正确的 Bluemix secure endpoint。
不同的 Bluemix 环境对应的 secure endpoint 是不同的:
US-SOUTH: secure.us-south.bluemix.net
EU-GB: secure.eu-gb.bluemix.net
AU-SYD: secure.au-syd.bluemix.net
EU-DE: secure.eu-de.bluemix.net
解决方式:
修改 CNAME 的设置,然后重新上传证书,清除浏览器所有的缓存信息,然后重试。
用户上传 SSL 证书的时候报错:
BXNUI0060E: A certificate for the ‘xxxx’ domain wasn’t uploaded because a problem occurred contacting IBM DataPower Gateway. Try again later. If you see this message again, go to the Bluemix status page to check whether a service or component has an issue. If the problem continues, click the Account and Support icon in the top menu bar, click Get help, and search for help or get support.
原因:
一种原因是用户上传错了 SSL 证书,不能给不同的自定义域名上传相同的 SSL 证书。
解决方式:
上传针对当前自定义域名对应的 SSL 证书。

参考资源
访问 IBM Bluemix 了解具体 Bluemix 提供的服务和功能
访问 IBM Bluemix Forum,在论坛中讨论 IBM Bluxmix 相关的问题
访问 Bluemix 专栏:在这里您可以获得最新最实用的 Bluemix 资讯和技术资源。
访问Bluemix 博客去了解如何使用 Let’s Encrypt 配置安全的自定义域名
developerWorks 云计算站点 提供了有关云计算的更新资源,包括
云计算资源中心。


更多相关信息,请关注 IBM技术专区

评论