MST

星途 面试题库

面试题:安全认证之SSL证书多域名支持的复杂场景应对

假设存在一个复杂的后端架构,包含多个不同类型的子系统(如微服务架构、遗留单体系统等),且每个子系统下又有多个需要SSL证书支持的不同域名,同时还需满足高可用、容灾等要求,设计一套完整的SSL证书多域名支持方案,并详细说明在部署、维护及应急处理方面的策略。
44.1万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试

SSL证书多域名支持方案

1. 证书类型选择

  • 通配符证书(Wildcard SSL Certificate):适用于同一主域名下的多个子域名,例如 *.example.com 可以保护 app.example.comapi.example.com 等。对于微服务架构下同一主域名的众多子域名较为适用,可降低证书管理成本。
  • 多域名证书(SAN 证书,Subject Alternative Name SSL Certificate):当不同域名不属于同一主域名体系时,使用 SAN 证书,它可以在一个证书中包含多个完全不同的域名,如 example1.comexample2.net 等。可满足遗留单体系统可能存在的不同域名需求。

2. 部署策略

微服务架构

  • 自动化部署工具:使用如 Kubernetes 等容器编排工具,结合 Helm 图表来管理微服务。在 Helm 图表中配置证书挂载,通过 Secret 资源对象存储 SSL 证书和私钥。例如,创建一个包含证书和私钥的 Secret:
apiVersion: v1
kind: Secret
metadata:
  name: my-ssl-secret
type: kubernetes.io/tls
data:
  tls.crt: <base64 encoded certificate>
  tls.key: <base64 encoded private key>

然后在 Deployment 或 StatefulSet 中挂载该 Secret 到容器内指定路径,供微服务使用。

  • 服务网格(如 Istio):如果采用 Istio 服务网格,可利用 Istio 的安全特性,通过 Sidecar 代理(如 Envoy)自动注入证书。在 Istio 的 Gateway 资源中配置 TLS 相关信息,如:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    tls:
      mode: SIMPLE
      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
      privateKey: /etc/istio/ingressgateway-certs/tls.key
    hosts:
    - "*.example.com"

遗留单体系统

  • 手动部署:对于无法使用自动化工具的遗留单体系统,将证书和私钥手动上传到服务器指定目录。例如,在 Linux 系统中,将证书放置在 /etc/ssl/certs 目录,私钥放置在 /etc/ssl/private 目录,并根据服务器软件(如 Apache、Nginx)的配置要求,修改相应的配置文件。以 Nginx 为例:
server {
    listen 443 ssl;
    server_name example1.com example2.net;
    ssl_certificate /etc/ssl/certs/your_certificate.crt;
    ssl_certificate_key /etc/ssl/private/your_private_key.key;
    ...
}

3. 维护策略

证书更新

  • 定期检查:设置自动化脚本或使用监控工具定期检查证书的过期时间。例如,使用 openssl 命令检查证书过期时间:openssl x509 -enddate -noout -in your_certificate.crt。提前设置预警时间,如证书过期前 30 天发出通知。
  • 更新流程:当证书即将过期时,按照证书颁发机构(CA)的流程重新申请证书。对于通配符证书和 SAN 证书,更新流程类似,重新生成 CSR(证书签名请求),提交给 CA 审核并获取新证书。在测试环境先进行证书更新测试,确保不影响业务后,再在生产环境进行更新。对于微服务架构,通过 Helm 图表更新 Secret 资源中的证书内容,并滚动升级相关 Pod;对于遗留单体系统,手动替换服务器上的证书和私钥文件,并重启服务器软件。

证书备份

  • 多地点备份:将证书和私钥备份到多个存储位置,如本地磁盘、网络存储(NAS)以及云存储(如 Amazon S3、Google Cloud Storage)。定期对备份进行完整性检查,确保备份数据可用。
  • 版本控制:对证书和私钥的不同版本进行记录,使用版本控制系统(如 Git)来管理证书相关文件,便于追溯证书的变更历史。

4. 应急处理策略

证书泄露或损坏

  • 立即吊销证书:一旦发现证书泄露或损坏,立即通过 CA 吊销该证书,防止恶意使用。同时通知所有相关系统和用户,告知证书已吊销及可能带来的影响。
  • 重新颁发证书:按照证书申请流程,重新申请新的证书。在重新颁发证书期间,对于微服务架构,可临时启用备用证书(如果有);对于遗留单体系统,可暂时将服务切换到非 HTTPS 模式(但要注意安全风险),直到新证书部署完成。

证书相关服务故障

  • 故障检测:使用监控工具实时监测与证书相关的服务状态,如 SSL/TLS 握手成功率、证书验证错误率等。当检测到异常时,及时发出警报。
  • 故障转移:对于高可用要求,可采用主备或多活架构。例如,在微服务架构中,通过 Kubernetes 的负载均衡和自动故障转移机制,当某个节点因证书相关问题出现故障时,流量自动切换到其他正常节点。对于遗留单体系统,可设置备用服务器,当主服务器出现证书服务故障时,手动或自动切换到备用服务器。