本文章主旨是为SAP Cloud Platform Cloud Foundry环境下设置个性化域名,实现在自己的域名下公开自己的应用程序方案。

通过SAP Cloud Platform自定义域服务,可以配置自己的自定义域以公开公开您的SAP Cloud Platform应用程序,而不使用默认子域。

前期准备

  1. cf-cli,下载安装好本机CF Command line。https://docs.cloudfoundry.org/cf-cli/install-go-cli.html
  2. 安装Custom Domain Self-service插件。https://tools.hana.ondemand.com/#cloud -> SAP Cloud Platform Cloud Foundry CLI Plugin -> Custom Domain Self-service
  3. 确保自己子账户下面有Custom Domain这一项服务。这项服务具体如如何查看,cf services
  4. 申请好自己的域名

总概述图如下
1

有概述图可以看出,使用Custom Domain过程中会设计四个不同的机构或平台,看上去复杂执行起来其实不难。请耐心看完以下内容。

以上准备工作都已经完成,接下来我们通过CF command line来完成custom domain的创建和应用的过程。

执行步骤

查看你的域名DNS是否有用

1
nslookup asb.cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>

1

域名有用说明你申请域名服务器是没有任何问题。

使用CF Custom Domain 服务创建域名,生成私钥和CSR

  1. 安装Custom Domain Cli

    1
    2
    3
    4
    5
    6
    # 解压custom domain cli
    tar -xf custom-domain-cli-1.0.36-darwin-amd64-x86_64.tar.gz
    cd darwin-amd64/

    # 安装 plugin
    cf install-plugin custom-domain-cli
  2. 登录到CF账户中,创建custom domain服务

    1
    2
    3
    4
    5
    6
    # 登录
    cf login -a https://api.cf.cn40.platform.<安全原因请查看截图完整地址>

    # 创建 domain服务
    cf cs INFRA custom_domains pocdomain
    cf create-domain "SCP GC CEE_Demo" cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>

    1

cpgc.cn40.apps.platform.<安全原因请查看截图完整地址> 这里域名就是我自己申请的域名

  1. 生成私钥和CSR

    1
    cf cdck cpgc-cn40-key "CN=*.cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>" "*.cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>"

    1

  2. 获取CSR

    1
    cf custom-domain-get-csr cpgc-cn40-key csr.pem

    1

保存好你的csr证书,接下来要那这个证书去证书机构进行签发。

注意,证书内容你只需要保存 「—–BEGIN CERTIFICATE REQUEST—– *** —–END CERTIFICATE REQUEST—–」这里面的内容。

去证书机构请求CSR获取签名

拿着上面获得CSR发送给CA证书办法机构去验证,当验证成功之后,CA机构会给你发回的相应的Cert。

我收到有DigiCert颁发的Intermediate Certificates。
1

最后将三个证书合并成一个Pem文件。
三个证书分别是:CA机构颁发的证书客户端证书, CA机构颁发的服务端证书和中间发证机构根证书的。

保存文件名为<your-domain-name>-chain.pem, 我的是cpgc-chain.pem。

如果你不是有机构来颁发的证书,也可以使用第三方开源来颁发,在这里不在多说,有兴趣的请搜索关键字acme。作为一个正规机构还是请使用正规渠道。

接下来我们需要导入证书并激活。

导入并激活证书

  1. 导入证书

    1
    cf cducc cpgc-cn40-key cpgc-chain.pem

    1

  2. 激活证书

    1
    cf cda cpgc-cn40-key  cpgc.cn40.apps.platform.<安全原因请查看截图完整地址> *.cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>

    1

  3. 查看证书激活状态

    1
    2
    echo -n | openssl s_client -connect cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>:443
    -servername *.cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>

    1
    好了,你已经成功了。接下来我们就可以使用自己的域名去发布应用了。

使用自己域名发布应用

  1. 修改你的manifest.yml
    在yaml里面添加routes,route填写自己的domain。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ---
    applications:
    - name: chat
    host: i304185-chat
    routes:
    - route: chat.cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>
    path: .
    memory: 128M
    buildpack: nodejs_buildpack
  2. 部署你的应用
    1
    2
    3
    4
    5
    # 部署
    cf push

    # 查看apps route地址
    cf apps
    1

分享域名给你的其余Org使用

当然当你配好了域名之后,只是在当前的组织里面使用,你也可以将自己的域名分配给其余组织使用,这个组织必须在你的全局账户之下

1
2
3
4
5
6
# 分享域名
cf share-private-domain "IBSO_cqhh" cpgc.cn40.apps.platform.<安全原因请查看截图完整地址>

# 查看分配情况
cf t -o IBSO_cqhh
cf domains

1
1

坑点

  1. Aliyun证书不支持重新颁发,如果你不小心删掉配好的证书。恭喜你,你要重新再购买了。选择SSL供应商,请提前咨询好是否支持重新颁发CA

  2. CF不支持私钥导出,所以不支持不同Account导入导出功能。

感谢阅读,打完收工。

参考资料

  1. https://help.sap.com/viewer/74af813c7ee2457cb5eddca0cc70a0c1/Cloud/en-US/4414cc43db2d4229b27b232a5590e253.html

  2. SAP内部wiki https://wiki.wdf.sap.corp/wiki/pages/viewpage.action?pageId=2098634698

  3. Sharing Custom Domains https://help.sap.com/viewer/74af813c7ee2457cb5eddca0cc70a0c1/Cloud/en-US/8ecabca8e9cc449f9de3eb34870ef490.html

感谢

Bella Wang提供的支持,因为你的支持,我才能尽快完成了custom domain的配置,感恩。