将证书用在内网应用

许多客户将使用私有证书来保护不面向公众且不需要公共证书的应用程序传输中的数据。例如公司可能有一个用于向员工传达公告和资源的公司内联网页面,或者一个允许员工查看其工资单的应用程序。这些应用程序永远不应该由组织外部的用户使用,因此不需要公共证书。

本节我们将设置简单的内部 Web 应用程序、配置证书并将其附加到ELB,以在内部 Web 浏览器和应用程序之间启用安全的 TLS 连接。

创建lambda

我们先创建一个lambda,做为ELB的后端服务。进行lambda页面,创建一个lambda,命名为pca-lambda, 选python环境,点击创建:

image-20231203101204815

创建完成后,更新lambda的代码:

import json

def lambda_handler(event, context):
    # TODO implement
    return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "isBase64Encoded": False,
    "headers": {
        "Content-Type": "text/html"
    },
    "body": "<h1>Hello from Lambda!</h1>"
}

点击部署:

image-20231203101308561

创建ELB

进入ELB页面,创建一个ELB:

image-20231203104607468

选择ALB类型:

image-20231203100705202

由于我们要在浏览器访问,这里选择internet-facing(假装我们在内网环境)。直接使用默认的vpc和子网:

image-20231203104637252

创建一个新的target group:

image-20231203104652133

选择lambda类型,将target-group命名为pca-test-target-group:

image-20231203104717685

选择上面创建出来的lambda:

image-20231203104728847

创建target group完成后,回到创建ELB的页面,刷新,使用这个target group:

image-20231203104747303

点击创建ELB,创建完成后,复制出来它的DNS,用于下面的步骤:

image-20231203104817063

然后为这个ELB的安全组放开80和443端口对0.0.0.0/0的访问,这样我们在浏览器中可以访问它。

请求证书

到 AWS Certificate Manager (ACM) 控制台并单击请求证书

image-20231203100254220

选择请求私有证书,因为我们正在构建一个使用私有证书建立 TLS 连接的内部应用程序

image-20231203100331023

在请求私有证书页面上,从下拉菜单中选择适当的 CA。根CA不应该用来直接颁发证书,因此我们要选择我们在上一节中创建的从属CA。在FQDN部分,输入ELB的DNS 名称:

image-20231203101512777

了解 ACM 需要权限才能正确续订从此私有证书颁发机构颁发的证书(上一节我们配置了从属CA允许 ACM自动续订该 CA 的私有证书):

image-20231203101551376

最后点击Request

刷新页面,证书状态应在几分钟(或几秒钟)更改为Issued

image-20231203101637496

创建ELB HTTPS Listener

在ELB页面,添加Listener:

image-20231203104945946选择协议HTTPS:端口应更改为 443;选择转发到pca-target-group:

image-20231203102129245

对于Default SSL/TLS server certificate部分:选择我们之前颁发的证书。该证书配置了这个ALB的DNS地址:

image-20231203105032049

最后点击添加,完成后的效果:

image-20231203102235571

测试浏览器访问

我们先用浏览器访问ELB的80端口,由于不需要验证证书,所以直接可以访问成功:

image-20231203105100013

现在我们测试443端口访问,我们需要验证 TLS 连接是否已成功建立,并验证我们的浏览器是否信任该证书。

由于 Web 浏览器的信任存储中没有根证书,ALB 身份验证将失败:

image-20231203105214336

在 AWS Private CA 控制台中,选择创建的根 CA。单击Export certificate body to a file, 这样certificate.pem 文件将保存在本地电脑上:

image-20231203105559632

将根证书加载到浏览器的信任存储中。打开 Chrome 的设置, 搜索certificate,在Privacy and security,单击Manage certificate:

image-20231203105724993

certificate.pem 文件拖到Certificates中:

image-20231203105832675

双击证书。选择Always trust:

image-20231203105913092

再次访问浏览器,这次可以成功访问,在浏览器的地址栏上看到绿色的锁图标。这表明 ALB 域的身份已经过验证,并且该证书受到浏览器的信任:

image-20231203105947537

本节ALB 出于测试目的而创建成internet-facing。但是在生产中,相同的步骤和理论也适用。