官方原文链接
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)和证书 |
先决条件
为你的域名设置公共DNS解析
为了替换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
为你的域名签发通配符证书。该证书从根认证机构处获得,例如VeriSign等。 参考如下信息:
根认证机构的公共证书为PEM格式
中级认证机构(如果有的话)的公共证书为PEM格式
通配符域证书为PEM格式
私钥为PKCS8格式(备注 - 详细步骤记录在管理指南中 "更改控制台代理SSL证书和域名"部分)
安装步骤
一旦更新管理端和Agent端的全局配置参数成功,则重新启动管理服务器。
全局设置
改变 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 (无需添加“*”)
上传自定义证书
备注:
|
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)和证书
本质上, 此过程为 :
创建你自己的根认证机构(CA)
创建由根认证机构(CA)签署的中级认证机构(可选步骤)
创建特定的域名证书请求,并使用中级认证机构签发证书(或根认证机构)
(视情况而定) 你需要在浏览器中添加根认证机构和中级认证机构。 请注意,如果在你机器上使用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)。 你将会收到一个有效的证书。.
水平有限,文中如有错误,欢迎指出。