Show Menu
主题×

默认情况下为SSL

为了不断提高AEM的安全性,Adobe引入了一项称为“默认SSL”的功能。 其目的是鼓励使用HTTPS连接到AEM实例。

默认情况下启用SSL

您可以通过单击AEM主屏幕中的相关收件箱消息,开始配置SSL(默认)。 要进入收件箱,请按屏幕右上角的铃图标。 然后,单击“查看 全部” 。 这将显示列表视图中排序的所有警报的列表。
在列表中,选择并打开配置 HTTPS警报 :
如果收件箱 中不存在配置HTTPS 警报,您可以通过转到
已为此功能 创建名为ssl-service 的服务用户。 打开警报后,将引导您完成以下配置向导:
  1. 首先,设置“商店凭据”。 这些是 ssl-service系统用户密钥存储的凭据 ,将包含HTTPS监听器的私钥和信任存储。
  2. 输入凭据后,单击 页面 右上角的“下一步”。 然后,上传SSL连接的关联私钥和证书。
    有关如何生成私钥以及要与向导一起使用的证书的信息,请参 阅以下过程
  3. 最后,指定HTTPS监听器的HTTPS主机名和TCP端口。

默认情况下自动化SSL

默认情况下,有三种方法可自动执行SSL。

通过HTTP POST

第一种方法包括发布到配置向导所使用的SSLSetup服务器:
POST /libs/granite/security/post/sslSetup.html

您可以在POST中使用以下有效负荷自动配置:
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="keystorePassword"

test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="keystorePasswordConfirm"
test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="truststorePassword"
test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="truststorePasswordConfirm"
test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="privatekeyFile"; filename="server.der"
Content-Type: application/x-x509-ca-cert

------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="certificateFile"; filename="server.crt"
Content-Type: application/x-x509-ca-cert

------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="httpsPort"
8443

Servlet与任何sling POST servlet一样,将以200 OK或错误HTTP状态代码作出响应。 您可以在响应的HTML正文中查找有关状态的详细信息。
以下是成功响应和错误的示例。
成功示例 (status = 200):
<!DOCTYPE html>
<html lang='en'>
<head>
<title>OK</title>
</head>
<body>
<h1>OK</h1>
<dl>
<dt class='foundation-form-response-status-code'>Status</dt>
<dd>200</dd>
<dt class='foundation-form-response-status-message'>Message</dt>
<dd>SSL successfully configured</dd>
<dt class='foundation-form-response-title'>Title</dt>
<dd>OK</dd>
<dt class='foundation-form-response-description'>Description</dt>
<dd>HTTPS has been configured on port 8443. The private key and
certificate were stored in the key store of the user ssl-service.
Please take note of the key store password you provided. You will need
it for any subsequent updating of the private key or certificate.</dd>
</dl>
<h2>Links</h2>
<ul class='foundation-form-response-links'>
<li><a class='foundation-form-response-redirect' href='/'>Done</a></li>
</ul>
</body>
</html>

错误示例 (status = 500):
<!DOCTYPE html>
<html lang='en'>
<head>
<title>Error</title>
</head>
<body>
<h1>Error</h1>
<dl>
<dt class='foundation-form-response-status-code'>Status</dt>
<dd>500</dd>
<dt class='foundation-form-response-status-message'>Message</dt>
<dd>The provided file is not a valid key, DER format expected</dd>
<dt class='foundation-form-response-title'>Title</dt>
<dd>Error</dd>
</dl>
</body>
</html>

通过包

或者,您也可以通过上传已包含这些必需项的包来自动设置SSL:
  • ssl服务用户的密钥库。 它位于 /home/users/system/security/ssl-service/keystore下
  • GraniteSslConnectorFactory

生成要与向导一起使用的私钥/证书对

在下面,您将找到一个示例,用于创建DER格式的自签名证书,SSL向导可以使用该证书。
自签名证书的使用仅用于示例目的,不应用于生产。
  1. 首先,创建私钥:
    openssl genrsa -aes256 -out localhostprivate.key 4096
    openssl rsa -in localhostprivate.key -out localhostprivate.key
    
    
  2. 然后,使用私钥生成证书签名请求(CSR):
    openssl req -sha256 -new -key localhostprivate.key -out localhost.csr -subj '/CN=localhost'
    
    
  3. 生成SSL证书并使用私钥对其进行签名。 在此示例中,将从现在起一年过期:
    openssl x509 -req -days 365 -in localhost.csr -signkey localhostprivate.key -out localhost.crt
    
    
将私钥转换为DER格式。 这是因为SSL向导要求密钥采用DER格式:
openssl pkcs8 -topk8 -inform PEM -outform DER -in localhostprivate.key -out localhostprivate.der -nocrypt

最后,在本页开头所述的图形SSL向导的步骤2中,将 localhostprivate.der上传为私钥,将 localhost.crt上传为SSL证书。

通过cURL更新SSL配置

您还可以使用cURL工具自动完成SSL配置。 您可以通过将配置参数发布到此URL来执行此操作:
https://<serveraddress>:<serverport>/libs/granite/security/post/sslSetup.html
以下是在配置向导中更改各种设置的参数:
  • -F "keystorePassword=password" -密钥库密码;
  • -F "keystorePasswordConfirm=password" -确认密钥库密码;
  • -F "truststorePassword=password" -信任商店密码;
  • -F "truststorePasswordConfirm=password" -确认信任商店密码;
  • -F " privatekeyFile=@localhostprivate.der " -指定私钥;
  • -F " certificateFile=@localhost.crt " -指定证书;
  • -F "httpsHostname=host.example.com" -指定主机名;
  • -F "httpsPort=8443" - HTTPS监听器将使用的端口。
运行cURL以自动化SSL配置的最快方式来自DER和CRT文件所在的文件夹。 或者,您也可以在certificateFile参数中指定完 privatekeyFile 整路径。
您还需要通过身份验证才能执行更新,因此请确保在cURL命令后面附加该参 -u user:passeword 数。
正确的cURL post命令应当如下:
curl -u user:password -F "keystorePassword=password" -F "keystorePasswordConfirm=password" -F "truststorePassword=password" -F "truststorePasswordConfirm=password" -F "privatekeyFile=@localhostprivate.der" -F "certificateFile=@localhost.crt" -F "httpsHostname=host.example.com" -F "httpsPort=8443" https://host:port/libs/granite/security/post/sslSetup.html

使用cURL的多个证书

可以通过重复certificateFile参数,向servlet发送证书链,如下所示:
执行命令后,请验证所有证书是否都发送到密钥库。 从以下位置检查密钥库: http://localhost:4502/libs/granite/security/content/userEditor.html/home/users/system/security/ssl-service