官方原文链接

https://cwiki.apache.org/confluence/display/CLOUDSTACK/Procedure+to+Replace+realhostip.com+with+Your+Own+Domain+Name


  • 简介

  • 功能影响

  • 已知问题

  • 先决条件

  • 安装步骤

  • 上传自定义证书

  • 验证过程

  • 实施细节

  • 故障排查

  •  常见问题

    • 如何生成自定义根CA和证书?

    • 如何从证书颁发机构Verisign获取证书?

简介

该文档介绍如何替换realhostip.com为自定义域名。 重要:你必须做该步骤,realhostip.com域名的DNS解析服务已经失效。

*********** 查看公告 : http://s.apache.org/jwe ***************************

功能影响

  • 通过控制台代理虚拟机 (CPVM)访问虚拟机控制台。

  • 通过辅助存储虚拟机 (SSVM)拷贝可用模版。

  • 下载 模版/ISO/卷 (SSVM)。

备注 - 如果你不想受影响的功能使用SSl通信,你完全可以禁用SSL。将 secstorage.encrypt.copy 设置为 "false",  consoleproxy.url.domain 设置为空值即可。

已知问题

问题

描述

备注
1. 不支持自签名证书
2. 一旦上传了自定义域名证书,,将无法回退使用realhostip.com。 请参考场景问题解答部分,创建自定义根认证机构(CA)和证书

先决条件

  1. 为你的域名设置公共DNS解析

    1. 为了替换realhostip.com使用您自己的域名,首先你需要在DNS服务器中针对你的域名做相关配置。 在该示例中我们假设你使用BIND作为DNS服务器。其他类型的DNS服务器也可以正常工作。本示例中我们使用“yourhostip.com”作为新的域名。 使用realhostip.com的方式为将CloudStack公共网络中的IP地址由77.88.99.11,转换成DNS名称:77-88-99-11.realhostip.com。 使用浏览器连接该名称匹配的通配符证书 *.realhostip.com时,要求使用SSL。 针对你的环境,你需要参照这个配置。

      1) 在你的DNS服务器中设置一个区域(如果还未设置)。Bind9中的配置示例如下:

      zone "yourhostip.com" IN { 
            type master; 
            file "yourhostip.com.zone"; 
            allow-update { none; }; 
      };

      2) 现在你需要为CloudStack中所有控制台代理可以分配的公共IP创建A记录。你会有这样一个地址范围:55.66.77.100 - 55.66.77.200。 在你的区域文件中,你需要参照如下记录添加:

      55-66-77-100      IN      A      55.66.77.100 
      55-66-77-101      IN      A      55.66.77.101 
      55-66-77-102      IN      A      55.66.77.102 
      55-66-77-103      IN      A      55.66.77.103 

      等等.. 

      55-66-77-200      IN      A      55.66.77.200

  2. 为你的域名签发通配符证书。该证书从根认证机构处获得,例如VeriSign等。 参考如下信息:

    1. 根认证机构的公共证书为PEM格式

    2. 中级认证机构(如果有的话)的公共证书为PEM格式

    3. 通配符域证书为PEM格式

    4. 私钥为PKCS8格式(备注 - 详细步骤记录在管理指南中 "更改控制台代理SSL证书和域名"部分)

安装步骤

  1. 一旦更新管理端和Agent端的全局配置参数成功,则重新启动管理服务器。  

  2. 全局设置

  • 改变 secstorage.encrypt.copy = true (该值默认为false。如果不为true,则修改为true 启用SSL。 你可以选择SSVM不使用SSL)

  • 改变 secstorage.ssl.cert.domain = *.yourdomain.com. 例如 - *.xyz.com. 备注 - 记得添加 “*”

  • 改变 consoleproxy.url.domain = *.yourdomain.com. 例如 - *.xyz.com (默认值为空,你可以保持为空,并选择CPVM是否使用SSL)。备注 - 记得添加 “*”

按照 "上传自定义证书"步骤替换realhostip.com为你自己的域名。 域名应该为: xyz.com (无需添加“*”)

上传自定义证书

备注:  

  • 针对上传自定义证书, 请忽略上传“中级证书”步骤。

  • 针对上传自定义链接证书, 必须上传中级证书。

  • 使用uploadCustomCertificate API上传根证书和中级证书。通过UI上传服务器证书和私钥。

 


    • http://123.123.123.123:8080/client/api?command=uploadCustomCertificate&id=2&sessionkey=LAM0wM%2B0cejIYxCHprtGc4w15sg%3D&name=intermed1&domainsuffix=customabc.com&certificate=-----BEGIN+CERTIFICATE-----%0AMIID5TCCAs2gAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwgZUxCzAJBgNVBAYTAlVT%0AMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0MxFDASBgNVBAoMC0N1c3RvbUFtb2do%0AMR4wHAYDVQQLDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFDASBgNVBAMMC0N1c3Rv%0AbUFtb2doMSAwHgYJKoZIhvcNAQkBFhFhbW9naHZrQGdtYWlsLmNvbTAeFw0xNDA0%0AMDExODQ2MjRaFw0xNTA0MDExODQ2MjRaMIGCMQswCQYDVQQGEwJVUzELMAkGA1UE%0ACAwCQ0ExFDASBgNVBAoMC0N1c3RvbUFtb2doMRgwFgYDVQQLDA9JbnRlcm1lZGlh%0AdGUgQ0ExFDASBgNVBAMMC0N1c3RvbUFtb2doMSAwHgYJKoZIhvcNAQkBFhFhbW9n%0AaHZrQGdtYWlsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALRo%0ANFLN%2FJN9iJz79Azb%2FheejbyO7dCFoBguqSgAsG2nW5n6DM2gKEBwu9Pgzu8KrZUz%0Ag69RawdWSQd%2BAQ%2FgNjYWImW%2F%2Bm%2FB6pTkMOXNIkPr1WZK9MunhtHzXzYmrQKHd6u%2F%0Al6TPXTwKlfwab%2FhstXD3pM1OkDM%2BDhqn3qqoF%2BBqgGq1bj9QDmEkq8bXJLWyZgCe%0ABykJvZo4tGEmHjkj0PCjwtJdN%2BOTGFMu0LfQta6SD7LQuof6nw47oeQg6PgrihFI%0AoeN6UV08K01KwSssjKmK5odDFPRBmWHsTaGAeTf9ptfcRNUe9nPDCs8Dq1e0%2BbNX%0A7qTnUoHcTgKfCKHsE4MCAwEAAaNQME4wHQYDVR0OBBYEFHA0lffQm%2BPYkpyUd4o2%0Asy9GM4RqMB8GA1UdIwQYMBaAFIG%2FFU%2FlKn9XfqAoAvC2qe855Md4MAwGA1UdEwQF%0AMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAEL2XLacq5C8Xvlzsl45KyLw9E0ch8NJ%0ALre5pUtSuwqKWnLWJ11HtSA2mqbv%2FKGKjxfwEW65S%2BLTh5Yy7%2Fdds4rp9dUx2bc%2F%0AMIqAh%2BqbpBfRGk882mCPXYFKOprfuPEnlA%2Biep3%2BdFlWLaoDB89BGNntu6cZ49Ph%0ACURC8HrPWWu%2B7zcvd03a7MetjqafIUxI7UXIcDTaO3oZdZfnhK336itCauzXYwxH%0AOd%2FiEoJot6aR%2BNFYVlrgtAUmUNjPQWBt3rOL4yqaE5Z0eaq3%2Buda456Q9SdRUPSZ%0Aya%2FzDhtd458PGtcCWvBQoswDMBjDBJWGP0QvW3eNCRR7ZIliUsfJ%2B6Y%3D%0A-----END+CERTIFICATE-----

    • 备注: 当通过API上传中级证书后, 只有CPVM会重启。应用下一个证书前,请确保你所有系统VM的agent状态为UP。

    • http://123.123.123.123:8080/client/api?command=uploadCustomCertificate&id=1&sessionkey=LAM0wM%2B0cejIYxCHprtGc4w15sg%3D&name=root1&domainsuffix=customabc.com&certificate=-----BEGIN+CERTIFICATE-----%0AMIID%2FzCCAuegAwIBAgIJANX8lVYYPplhMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYD%0AVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJBgNVBAcMAlNDMRQwEgYDVQQKDAtDdXN0%0Ab21BbW9naDEeMBwGA1UECwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRQwEgYDVQQD%0ADAtDdXN0b21BbW9naDEgMB4GCSqGSIb3DQEJARYRYW1vZ2h2a0BnbWFpbC5jb20w%0AHhcNMTQwNDAxMTgwODUzWhcNMjQwMzI5MTgwODUzWjCBlTELMAkGA1UEBhMCVVMx%0ACzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTQzEUMBIGA1UECgwLQ3VzdG9tQW1vZ2gx%0AHjAcBgNVBAsMFUNlcnRpZmljYXRlIEF1dGhvcml0eTEUMBIGA1UEAwwLQ3VzdG9t%0AQW1vZ2gxIDAeBgkqhkiG9w0BCQEWEWFtb2dodmtAZ21haWwuY29tMIIBIjANBgkq%0AhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Se5P610tI%2B5sz3X3FTjXGZZ3BzjdDIZ%0A5v5FQFcpAI35dBIYXFQv93gDp%2BAjwxETPP2p%2BhOMtWQm1DWAiyDldH7WZm7EDmz9%0A6ymnU00RlkjluUhfhwTtB9l59xo1haCaKcZQpNBPFm7yPlTTEVLSFAMr0QZVPuu3%0AHM4rClZe9KdGkh4%2FcpzIrYAys2MZpoG3mu0fE6EFbqEJYa5M%2Bvgsja1MqVt58TPo%0AqyaI548P6evJZ%2FpHiqDb360nxFDzbZlSqEUugq5UiJzMm5KyLObvhVhzEZcWLbGe%0ASUAYaIdUfvEt%2FKWlqDZ%2BzRW5RpVMTT%2FFZtArZLs%2FZuZJybq97KSj0wIDAQABo1Aw%0ATjAdBgNVHQ4EFgQUgb8VT%2BUqf1d%2BoCgC8Lap7znkx3gwHwYDVR0jBBgwFoAUgb8V%0AT%2BUqf1d%2BoCgC8Lap7znkx3gwDAYDVR0TBAUwAwEB%2FzANBgkqhkiG9w0BAQUFAAOC%0AAQEAbsKknHC6mEmE24eEV9CfAoGqym4aH3aEBS6%2FUWWXQ%2FOjEArM5xUSXVUCnpQR%0APgLTpqxMymi%2Bq%2BdhAPhJFxDq0nqw91kJmUZ9cy2LINs0akapNhWMvsomfy4YbiLR%0ANUHd%2BymaUb0Q%2BlGe5WeL4kh3W7KbVl0STIxFoRccxHKQHOiIcaQT4AzGWO8uCi90%0AbsFxk7Q11RwMUBUgK0qrhwnl31eUD0bBPvXADix0piTBtUjBGJSJR2at9l%2FoI6F0%0AMyHwZer%2FNsN0vr%2FyeCbYdipdvYrDJOniRuhku01uyFzf8U7%2Fa%2BrDVUtxGPxxfQzR%0APCTXX%2Fyam7lFvMT3ITntyF%2BKhg%3D%3D%0A-----END+CERTIFICATE-----

    • 备注: 当通过API上传根证书后, 只有CPVM会重启。应用下一个证书前,请确保你所有系统VM的agent状态为UP。

    • 确保URL中的证书被编码,一种方法是使用Google Chrome - Advanced Rest Client 对URL中的证书进行编码 (该工具将换行符转换为%0A,所以证书中的多行数据将被编码为一行).

    • 确保证书为PEM格式.

    • API调用时,必须首先将根证书设置为id=1,中级证书设置为id=2,3,4等等。.

    • 此处没有约定名称规则,但尽量使用有助于我们命名的规则。例如:根证书为 "root",中级证书为 "intermediate1", "intermediate2" 等等。 备注:确保名称是独一无二的。

    • 下面API调用中的所有域名后缀,都必须与全局配置中secstorage.ssl.cert.domain/consoleproxy.url.domain 的值(yourdomain.com)保持一致。

    • 理解参数:

    • 调用API上传根证书, 这是一个强制性的步骤。   

    • 调用API上传中级证书。此为可选步骤,为应对存在中级证书的情况。

    • 转到  UI -->基础架构 –> 点击“SSL证书”填入服务器证书,私钥和匹配的域名并点击确认。 成功上传证书后会得到“更新SSL证书成功”的回应。(备注 - 此处不应对证书和密钥做URL编码)

    • 重启SSVM和CPVM确保程序使用新的证书。

验证过程

  • CPVM - 检查用户虚拟机的控制台应该已经工作正常. 嵌入的iframe中应该显示为配置后的HTTP/HTTPS协议。

  • SSVM -

    • 复制模版 - 尝试从一个区域复制模版到另外一个区域,验证是否工作正常.

    • 下载 模版/卷/iso - 下载链接应该显示为配置后的HTTP/HTTPS协议,并确保可以正常下载。

实施细节

  • 详细信息在此处获得: wiki

  • CPVM仅充当Java HTTP服务器。

  • 如果是在源区域,SSVM充当服务器提供模版/卷/iso的下载。充当服务端时使用Apache webserver。

  • 从目标区域中复制时,SSVM充当客户端进行复制操作。 SSVM充当客户端时使用Java Client。

故障排查

详细信息可以在此处获得: wiki

常见问题

如何生成自定义根认证机构(CA)和证书

本质上, 此过程为 :

  1. 创建你自己的根认证机构(CA)

  2. 创建由根认证机构(CA)签署的中级认证机构(可选步骤)

  3. 创建特定的域名证书请求,并使用中级认证机构签发证书(或根认证机构)

  4. (视情况而定) 你需要在浏览器中添加根认证机构和中级认证机构。 请注意,如果在你机器上使用openssl创建,他们将存在于操作系统中。因此,较好的测试方法是不同的机器上创建。

对于步骤 1 : https://jamielinux.com/articles/2013/08/act-as-your-own-certificate-authority/

对于步骤 2: https://jamielinux.com/articles/2013/08/create-an-intermediate-certificate-authority/   (注意博客中错误的部分,参考下方评论内容)

对于步骤 3: https://jamielinux.com/articles/2013/08/create-and-sign-ssl-certificates-certificate-authority/

对于步骤 4 : 在浏览器或系统中执行特定的步骤。

 

如何从证书颁发机构Verisign获取证书

实际操作步骤如下。 使用openssl工具。具体步骤请查阅 Admin guide

生成PKCS#8格式的私钥证书

生成证书签名请求 (CSR)

前往你最信任的认证中心,,购买SSL证书,并提交证书签名请求(CSR)。 你将会收到一个有效的证书。.




水平有限,文中如有错误,欢迎指出。