SAP BTP上实现自定义域名配置

SAP BTP平台提供了自定义域名配置服务Custom Domain Certificate service,供BTP平台之上的SaaS服务发布应用。本文将具体阐述,配置自定义域名的步骤,以及在中国相关的法律法规要求,给中国的BTP用户一个更完整的指引。

为什么需要自定义域名

通常,用户需要通过访问URL来消费我们的服务。URL是由通信协议、域名、访问路径组成,以CPI服务为例:

在Cloud Foundry(简称CF)环境中,trial3-tia.it-cpi010.cpi.cn40.apps.platform.sapcloud.cn 称作route,route一般由hostname和domain组成。例如:trial3-tia为hostname,it-cpi010.cpi.cn40.apps.platform.sapcloud.cn为domain。

如何配置自定义域名

步骤概览

1.域名注册 Purchase a domain

2.域名实名认证 Do real-name authentication for your domain

3.工信部ICP备案 Do ICP filing for your domain

4.公安联网备案(上海强制) Do PSB filing for your domain (mandatory in Shanghai)

5.DNS记录配置 Add DNS resolution record from your domain to BTP

6.数字证书申请 Apply for SSL/TLS certificate for your domain

7.数字证书上传和激活 Upload and activate SSL/TLS certificate with SAP BTP custom domain certificates service

步骤1:域名注册 Purchase a domain

我们需要向域名注册商(domain name registrar)采购具有特定含义的域名。域名注册商包括有阿里云(万网)、Godaddy、Network Solutions等。

例如:阿里云(万网)https://wanwang.aliyun.com/

步骤2:域名实名认证 Do real-name authentication for your domain

域名注册成功后,根据相关规定,需要向域名注册局(domain registry)做实名认证。否则,注册局将会强制停止解析。

详细步骤可参考:域名实名认证流程 阿里云,根据文档提示操作。

步骤3:工信部ICP备案 Do ICP filing for your domain

ICP备案的目的是为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播。

一般来说,一级域名需要备案。二级域名是建立在一级域名上的,如果一级域名已经备案,二级域名不管是解析到国外主机还是解析到国内主机都不需要在备案。 如果你的一级域名没有备案,使用的是国外的主机,那么我们使用二级域名解析到中国内地(大陆)主机时,二级域名就必须完成备案才可对外提供服务(如果服务器在港澳台及其他国家和地区,则不需要备案)。

如果没有提交过备案,直接将域名解析至中国内地(大陆)服务器上,将被监测系统识别并阻断网站服务,提示你需先完成备案。严重情况,很有可能被查处以后关停。

如果备案不是在阿里云上完成,还需要在阿里云上做接入备案。在中国,BTP作为PaaS是落地在阿里云的IaaS之上的,换句话说服务器用的是阿里。如果用户所使用的域名已经在其他接入商那里做过备案,同时又希望在BTP@AliCloud上复用这个域名,根据政策要求,我们需要将备案信息接入到阿里云。如果没有将备案信息接入阿里云,将被阿里云监测系统识别并阻断网站服务。

详细步骤可参考:ICP备案流程 – 阿里云

步骤4:公安联网备案(上海强制) Do PSB filing for your domain (mandatory in Shanghai)

对于上海地区来说,强制实行公安备案。因此,已通过ICP备案的服务必须在30天内向公安部(Public Security Bureau)进行后续的公安联网备案。

详细可参考:http://www.beian.gov.cn/

步骤5:DNS记录配置 Add DNS resolution record from your domain to BTP

在完成域名注册和备案之后,域名所有者需要为自己的域名(或子域名)配置DNS记录,将他们映射到BTP@AliCloud平台的入口,即API Endpoint,使得用户访问应用的时候,可以正确解析到应用所部署的位置。

例如:将域名*.apps.sap-samples.scpcloud.top 映射到某个BTP子账户(subaccount)的API Endpoint。

如何查看你所在环境的API Endpoint?进入到子账户的首页,可找到响应的API Endpoint,如图:

步骤6:数字证书申请 Apply for SSL/TLS certificate for your domain

利用SAP BTP Custom Domain Certificate service生成公私钥对,并在本地获得CSR文件:

  1. Create Custom Domains

  2. Create a Certificate Signing Request

然后再利用CSR,向DigiCert等CA机构购买数字证书,或自签证书。

步骤7:数字证书上传和激活 Upload and activate SSL/TLS certificate with SAP BTP custom domain certificates service

本地拿到证书后,还需要向BTP上传和激活证书,使其最终生效。

利用SAP BTP Custom Domain Certificate service上传和激活证书:Upload and Activate the Signed Certificate

如何将应用映射到自定义域名

域名的映射可以通过三种方式来实现:

  1. CF命令行

    详细的步骤可参考:Map Your Own Application to a Custom Domain

  1. 配置mainifest.yaml文件

    详细的说明可参考:https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#route-attribute

  1. 配置mta.yaml文件

    详细的说明可参考:https://help.sap.com/docs/BTP/65de2977205c403bbc107264b8eccf4b/66a7033658ac4b5db33998c12dc9f37f.html?locale=en-US&q=multitarget%20application

常见问题

  1. 我自己有一个域名,可以在BTP@AliCloud上面用吗?

    答:可以的。例如:手上有一个已经做过备案的一级域名mydomain.com,那你可以在此基础上设置一个子域名btp.mydomain.com,并将该子域名映射到BTP的API endpoint。将*.btp.mydomain.com映射到api.cf.cn40.platform.sapcloud.cn。另外,如果域名接入商不是阿里云,还需要额外在阿里云上做一次接入备案。

  2. 我的一级域名做过备案,子域名还需要再备案吗?

    答:一级域名如果已经做过备案,子域名不再需要备案。

  1. 如果我想要部署多个应用,可以共用一个域名吗?

    答:可以的。你可以将域名DNS记录设置为wildcard形式,例如:将*.btp.mydomain.com映射到api.cf.cn40.platform.sapcloud.cn。一次设置,多次使用。在CF中,为不同应用设置不同的hostname,无论a.btp.mydomain.com还是b.btp.mydomain.com都可以映射到BTP。