Aws基础:修订间差异

来自linuxsa wiki
跳转到导航 跳转到搜索
Evan留言 | 贡献
Evan留言 | 贡献
 
(未显示同一用户的9个中间版本)
第8行: 第8行:
https://calculator.aws/#/
https://calculator.aws/#/


=video=
[https://www.bilibili.com/video/BV1DhrhY7E93/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714 第1期(基础知识)]
=[[AWS Certification]]=
=[[AWS cli Setup and aws console access]]=
=[[AWS cli Setup and aws console access]]=


第23行: 第27行:


=vpc=
=vpc=
=ALB=
https://www.eksworkshop.com/docs/fundamentals/exposing/ingress/multiple-ingress/
https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/alb-ingress.html
=role=
=role=
<pre>
<pre>
第227行: 第237行:


</pre>
</pre>
=SSM=
25:00  33:00:  60:00  1:03  也只是讲知识点为了考试 而已 jan 10 2026 Done
https://www.bilibili.com/video/BV1vw41197xW/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714
伯乐大典】AWS Systems Manager知识点梳理|亚马逊|云计算|解决方案架构师|SAA|SAP|DevOps
AWS SAP - 9.5 部署 - AWS system manager (SSM)
automation document 只是带过而已
https://www.bilibili.com/video/BV1oG411z7ap/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714
== SSM Automation==
=ACM=
=ACM=
how to check if the cert chain had been upgrade to remove starfield c2  
how to check if the cert chain had been upgrade to remove starfield c2  


ACM will no longre cros sign certificates with starfield class 2  starting  
ACM will no longre cros sign certificates with starfield class 2  starting  
https://www.ssllabs.com/ssltest/


https://repost.aws/questions/QU7ZP_50i7T_qpjN7ZikSHjQ/how-to-solve-new-amazon-public-certificates-no-longer-chain-to-the-starfield-class-2-certification-authorit
https://repost.aws/questions/QU7ZP_50i7T_qpjN7ZikSHjQ/how-to-solve-new-amazon-public-certificates-no-longer-chain-to-the-starfield-class-2-certification-authorit


https://aws.amazon.com/cn/blogs/security/acm-will-no-longer-cross-sign-certificates-with-starfield-class-2-starting-august-2024/
https://aws.amazon.com/cn/blogs/security/acm-will-no-longer-cross-sign-certificates-with-starfield-class-2-starting-august-2024/
== py==
=== file.txt===
<pre>
#txt
wiki.linuxchina.net
www.google.com
www.github.com
www.baidu.com
# 这是注释,会被自动忽略
example.com
yourdomain.com
#pyfile
import ssl
import socket
import sys
from OpenSSL import crypto
# ======================
# ✅ 从 hosts.txt 文件中读取域名列表
# ======================
HOSTS_FILE = "hosts.txt"  # 确保此文件与脚本在同一目录,或修改为绝对路径
# Starfield 相关关键词
STARFIELD_KEYWORDS = [
    "Starfield Technologies, Inc.",
    "Starfield Class 2 Certification Authority"
]
def read_domains_from_file(filename):
    """从文件中读取域名列表,自动跳过空行和以 # 开头的注释行"""
    domains = []
    try:
        with open(filename, "r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()  # 去掉首尾空格和换行
                if not line or line.startswith("#"):
                    continue  # 跳过空行和注释
                domains.append(line)
    except FileNotFoundError:
        print(f"[❌] 错误:找不到文件 '{filename}',请确保它与脚本在同一目录。")
        sys.exit(1)
    except Exception as e:
        print(f"[❌] 读取文件时出错:{e}")
        sys.exit(1)
    return domains
def get_certificate_chain(domain, port=443):
    """获取域名证书链(返回 OpenSSL X509 对象列表)"""
    cert_chain = []
    try:
        ctx = ssl.create_default_context()
        with socket.create_connection((domain, port), timeout=10) as sock:
            with ctx.wrap_socket(sock, server_hostname=domain) as ssock:
                der_certs = ssock.getpeercert(chain=True)
                if not der_certs:
                    print(f"[!] 域名 {domain}:无法获取证书链")
                    return []
                for der_cert in der_certs:
                    cert = crypto.load_certificate(crypto.FILETYPE_ASN1, der_cert)
                    cert_chain.append(cert)
    except Exception as e:
        print(f"[!] 域名 {domain}:获取证书时出错 - {e}")
        return []
    return cert_chain
def check_starfield_issuer(cert):
    """检查证书的 Issuer 是否包含 Starfield 关键词"""
    try:
        issuer = cert.get_issuer()
        issuer_str = issuer.rfc4514_string()
        for keyword in STARFIELD_KEYWORDS:
            if keyword in issuer_str:
                return True
    except Exception as e:
        print(f"[!] 域名 {cert.get_subject().rfc4514_string()}:解析 Issuer 出错 - {e}")
    return False
def analyze_domain(domain):
    """分析单个域名的证书链是否包含 Starfield"""
    print(f"\n" + "="*50)
    print(f"🔍 正在检查域名:{domain}")
    chain = get_certificate_chain(domain)
    if not chain:
        print(f"❌ 域名 {domain}:无法获取证书链,跳过。")
        return
    print(f"📜 共获取到 {len(chain)} 个证书。")
    found_starfield = False
    for idx, cert in enumerate(chain):
        try:
            subject = cert.get_subject().rfc4514_string()
            issuer = cert.get_issuer().rfc4514_string()
            print(f"\n🔒 证书 #{idx + 1}:")
            print(f"  Subject(使用者): {subject}")
            print(f"  Issuer(颁发者): {issuer}")
            if check_starfield_issuer(cert):
                print("  ⚠️ [发现] 该证书由 Starfield Class 2 或相关 CA 签发!")
                found_starfield = True
            else:
                print("  ✅ [安全] 该证书与 Starfield Class 2 无关。")
        except Exception as e:
            print(f"  ⚠️ 解析证书 #{idx+1} 时出错:{e}")
    if found_starfield:
        print(f"\n🔴 结论({domain}):❌ 证书链 **仍然包含 Starfield Class 2,尚未移除。**")
    else:
        print(f"\n🟢
</pre>
=== list===
<pre>
import ssl
import socket
import sys
from OpenSSL import crypto
# ======================
# ✅ 在这里设置你要检查的域名列表
# ======================
DOMAINS = [
    "wiki.linuxchina.net",
    "www.google.com",
    "www.github.com",
    "www.baidu.com",
    # 你可以继续添加更多域名,例如:
    # "example.com",
    # "yourdomain.com",
]
# Starfield 相关关键词(用于检查 Issuer)
STARFIELD_KEYWORDS = [
    "Starfield Technologies, Inc.",
    "Starfield Class 2 Certification Authority"
]
def get_certificate_chain(domain, port=443):
    """获取指定域名的证书链(返回 OpenSSL X509 对象列表)"""
    cert_chain = []
    try:
        ctx = ssl.create_default_context()
        with socket.create_connection((domain, port), timeout=10) as sock:
            with ctx.wrap_socket(sock, server_hostname=domain) as ssock:
                der_certs = ssock.getpeercert(chain=True)
                if not der_certs:
                    print(f"[!] 域名 {domain}:无法获取证书链")
                    return []
                for der_cert in der_certs:
                    cert = crypto.load_certificate(crypto.FILETYPE_ASN1, der_cert)
                    cert_chain.append(cert)
    except Exception as e:
        print(f"[!] 域名 {domain}:获取证书时出错 - {e}")
        return []
    return cert_chain
def check_starfield_issuer(cert):
    """检查单个证书的 Issuer 是否包含 Starfield 关键词"""
    try:
        issuer = cert.get_issuer()
        issuer_str = issuer.rfc4514_string()  # 标准格式的 Issuer DN
        for keyword in STARFIELD_KEYWORDS:
            if keyword in issuer_str:
                return True
    except Exception as e:
        print(f"[!] 域名 {cert.get_subject().rfc4514_string()}:解析 Issuer 出错 - {e}")
    return False
def analyze_domain(domain):
    """分析单个域名的证书链是否包含 Starfield"""
    print(f"\n" + "="*50)
    print(f"🔍 正在检查域名:{domain}")
    chain = get_certificate_chain(domain)
    if not chain:
        print(f"❌ 域名 {domain}:无法获取证书链,跳过。")
        return
    print(f"📜 共获取到 {len(chain)} 个证书。")
    found_starfield = False
    for idx, cert in enumerate(chain):
        try:
            subject = cert.get_subject().rfc4514_string()
            issuer = cert.get_issuer().rfc4514_string()
            print(f"\n🔒 证书 #{idx + 1}:")
            print(f"  Subject(使用者): {subject}")
            print(f"  Issuer(颁发者): {issuer}")
            if check_starfield_issuer(cert):
                print("  ⚠️ [发现] 该证书由 Starfield Class 2 或相关 CA 签发!")
                found_starfield = True
            else:
                print("  ✅ [安全] 该证书与 Starfield Class 2 无关。")
        except Exception as e:
            print(f"  ⚠️ 解析证书 #{idx+1} 时出错:{e}")
    if found_starfield:
        print(f"\n🔴 结论({domain}):❌ 证书链 **仍然包含 Starfield Class 2,尚未移除。**")
    else:
        print(f"\n🟢 结论({domain}):✅ 证书链 **没有发现 Starfield Class 2,已升级/移除。**")
def main():
    print("[🚀] 开始批量检查多个域名的证书链是否包含 Starfield Class 2...")
    for domain in DOMAINS:
        analyze_domain(domain)
    print("\n" + "="*50)
    print("[✅] 所有域名检查完毕!")
if __name__ == "__main__":
    main()
</pre>
<pre>
好的!下面我将为你提供一个 一键检查脚本,用于 自动化检查某个域名(比如 wiki.linuxchina.net)的 SSL 证书链,判断是否包含 Starfield Class 2 认证机构(CA)。
✅ 脚本功能
功能 是否支持
输入一个域名(如 wiki.linuxchina.net) ✅
自动获取该域名的 SSL 证书链 ✅(使用 OpenSSL 或 Python 内置库)
自动分析证书链中的每个证书 ✅
检查是否存在 Starfield Technologies, Inc. 以及 Starfield Class 2 Certification Authority ✅
输出清晰的结果:是否包含 Starfield Class 2 ✅
支持 Shell 脚本(Bash) 和 Python 脚本 两种方式 ✅ 两种都提供
🧩 方法一:Python 脚本(推荐,跨平台,无需额外依赖)
适用于 Linux、macOS、Windows(需安装 Python 3)
✅ 脚本名称:check_starfield_in_chain.py
import ssl
import socket
import sys
from OpenSSL import crypto
# 要检查的域名
DOMAIN = "wiki.linuxchina.net"  # 你可以修改为任意域名
# Starfield 相关关键词
STARFIELD_KEYWORDS = [
    "Starfield Technologies, Inc.",
    "Starfield Class 2 Certification Authority"
]
def get_certificate_chain(domain, port=443):
    """获取指定域名的证书链(返回 OpenSSL.crypto.X509 对象列表)"""
    cert_chain = []
    try:
        # 创建 SSL 上下文
        ctx = ssl.create_default_context()
        with socket.create_connection((domain, port)) as sock:
            with ctx.wrap_socket(sock, server_hostname=domain) as ssock:
                # 获取证书链(底层是 OpenSSL 对象)
                der_certs = ssock.getpeercert(chain=True)
                if not der_certs:
                    print("[!] 无法获取证书链。")
                    return []
                for der_cert in der_certs:
                    cert = crypto.load_certificate(crypto.FILETYPE_ASN1, der_cert)
                    cert_chain.append(cert)
    except Exception as e:
        print(f"[!] 获取证书时出错: {e}")
        return []
    return cert_chain
def check_starfield_issuer(cert):
    """检查单个证书的 Issuer 是否包含 Starfield 关键词"""
    try:
        issuer = cert.get_issuer()
        issuer_str = issuer.rfc4514_string()  # 或使用其他格式
        # 也可以用:issuer.get_components() 手动解析
        for keyword in STARFIELD_KEYWORDS:
            if keyword in issuer_str:
                return True
    except Exception as e:
        print(f"[!] 解析证书 Issuer 出错: {e}")
    return False
def main():
    print(f"🔍 正在检查域名:{DOMAIN}")
    chain = get_certificate_chain(DOMAIN)
    if not chain:
        print("[❌] 未能获取到证书链,请检查网络或域名是否正确。")
        return
    print(f"📜 共获取到 {len(chain)} 个证书。")
    found_starfield = False
    for idx, cert in enumerate(chain):
        issuer_str = cert.get_issuer().rfc4514_string()
        subject_str = cert.get_subject().rfc4514_string()
        print(f"\n🔒 证书 #{idx + 1}:")
        print(f"  Subject (使用者): {subject_str}")
        print(f"  Issuer  (颁发者): {issuer_str}")
        if check_starfield_issuer(cert):
            print("  ⚠️  [发现] 该证书由 Starfield Class 2 或相关 CA 签发!")
            found_starfield = True
        else:
            print("  ✅ [安全] 该证书与 Starfield Class 2 无关。")
    if found_starfield:
        print("\n🔴 结论:该域名的证书链 **仍然包含 Starfield Class 2 相关证书,尚未移除。**")
    else:
        print("\n🟢 结论:该域名的证书链 **没有发现 Starfield Class 2,已经升级/移除。**")
if __name__ == "__main__":
    main()
🧰 运行方法(Python 脚本)
1. 确保你已安装 Python 3
在终端 / CMD 中运行:
python --version
python3 --version
确保是 Python 3.6 或更高版本
2. 安装依赖库:pyOpenSSL
运行以下命令安装:
pip install pyopenssl
pip3 install pyopenssl
3. 将上面的代码保存为:
📄 check_starfield_in_chain.py
4. 运行脚本:
python check_starfield_in_chain.py
python3 check_starfield_in_chain.py
5. 查看输出
脚本会:
• 显示该域名的证书链中有几个证书
• 逐个显示每个证书的 Subject(使用者) 和 Issuer(颁发者)
• 如果某个证书的 Issuer 包含 Starfield Technologies, Inc. 或 Starfield Class 2 Certification Authority,就会提示发现
• 最后给出结论:是否仍然包含 Starfield Class 2
🧩 方法二:Shell 脚本(Bash + OpenSSL)—— 适用于 Linux / macOS
如果你更喜欢用 Shell 脚本,且你的系统支持 openssl 命令,可以使用这个简化版本:
✅ 脚本名称:check_starfield.sh
#!/bin/bash
DOMAIN="wiki.linuxchina.net"  # 你可以修改这个域名
echo "🔍 正在检查域名:$DOMAIN 的证书链..."
echo "--------------------------------------------------"
echo "📡 获取证书链信息:"
openssl s_client -showcerts -connect "$DOMAIN":443 2>/dev/null <<EOF | awk '
BEGIN { in_cert=0; cert_count=0 }
/-----BEGIN CERTIFICATE-----/ { in_cert=1; cert_count++ ; print "\n🔒 证书 #' cert_count }
/-----END CERTIFICATE-----/ { in_cert=0; print "" }
in_cert { print }
' | grep -A1000 "-----BEGIN CERTIFICATE-----"
echo "--------------------------------------------------"
echo "🔍 开始分析 Issuer 是否包含 Starfield ..."
# 提取所有证书并分析 Issuer
echo | openssl s_client -connect "$DOMAIN":443 2>/dev/null | \
  awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/' | \
  awk 'BEGIN { RS="-----END CERTIFICATE-----"; FS="\n" }
      NR>0 {
        cert = $0 "-----END CERTIFICATE-----";
        cmd = "echo \"" cert "\" | openssl x509 -noout -issuer 2>/dev/null";
        cmd | getline issuer;
        close(cmd);
        if (issuer ~ /Starfield Technologies, Inc.|Starfield Class 2 Certification Authority/) {
          print "⚠️ [发现] Starfield 相关 Issuer: " issuer;
          found=1;
        } else if (issuer) {
          print "✅ 证书 Issuer: " issuer;
        }
      }'
if [ "$found" = "1" ]; then
  echo "🔴 结论:该域名证书链 **包含 Starfield Class 2,尚未移除。**"
else
  echo "🟢 结论:该域名证书链 **没有发现 Starfield Class 2,已升级/移除。**"
fi
⚠️ 注意:这个 Shell 版本是简化逻辑,可能不如 Python 版精准,但也能大致分析。
✅ 推荐使用:Python 脚本
对比项 Python 脚本 Shell 脚本
精准度 ✅ 高(使用 pyOpenSSL 解析 Issuer 更准确) ⚠️ 一般(依赖 grep / awk,可能漏判)
跨平台 ✅ 支持 Win/Linux/macOS ✅ 但需系统有 openssl
易用性 ✅ 一键运行,输出清晰 ⚠️ 需要赋予执行权限,解析略原始
推荐程度 ⭐⭐⭐⭐⭐ ⭐⭐⭐
✅ 总结
你想要的功能 解决方案
一键检查某个域名(如 wiki.linuxchina.net)的证书链是否包含 Starfield Class 2 ✅ 提供了 Python 脚本(推荐)和 Shell 脚本 两个版本
自动获取证书链并分析 Issuer ✅ 脚本自动获取 + 关键词匹配
输出是否仍依赖 Starfield ✅ 最后给出明确结论:已移除 / 仍然存在
是否需要安装额外工具 Python 版:仅需 pyOpenSSL(pip install pyopenssl)<br>Shell 版:需要系统有 openssl 命令(一般都有)
📦 下一步
1. 推荐直接使用 Python 脚本(更精准、易读、跨平台)。
2. 将脚本中的 DOMAIN = "wiki.linuxchina.net" 替换为你想检查的任意域名。
3. 运行后,你将立刻知道:
  • 该域名是否仍然使用 Starfield Class 2
  • 证书链的构成是否安全
🔧 如你希望我帮你打包成可执行文件(如 Windows 的 .exe 或 Linux 的可运行脚本),或加入 GUI 界面、批量检查多个域名,也欢迎继续告诉我!
我可以继续帮你优化这个工具!🛠️🔒🔍
</pre>


<pre>
<pre>
第459行: 第955行:




  [[category:devops]][[category:aws]]
  [[category:devops]][[category:AWS]]

2026年3月1日 (日) 05:36的最新版本

pre

默认得加pubkey ec2 都叫启动


https://cidr.xyz/

https://calculator.aws/#/

video

第1期(基础知识)

AWS Certification

AWS cli Setup and aws console access

Elastic IP 和 Public IP 的区别

创建EC2实例的时候,我们可以勾选“自动分配Public IP”(原话是英文的哦~),也可以不勾选,然后手动关联Elastic IP(EIP),那么着二者有什么区别呢? 从亚马逊在线技术支持那里了解到: (1)EIP是属于某个特定的账号,可以关联到账号的任意实例上,也可卸载下来重新关联到其他实例上,而且实例被删除之后,EIP依然单独存在。(分配EIP时注意VPC和EC2的EIP的区别,不同类型的EIP时能关联到自己类型的实例上,即VPC中的EIP只能用于VPC中的实例,Classic EC2只能关联非VPC的EIP) (2)而普通的Public IP是属于具体的某台实例,不能卸载重新关联到别的实例,实例创建时,如果勾选自动分配Public IP,则会随实例一起被创建,实例删除时,跟着被删除,无法被重复利用和保留; (3)还有一个非常重要的特性:Public IP在实例关机后再开机,可能会改变,重启不影响(这跟Classic EC2实例的Public DNS一样,可能会改变)。而EIP怎么都不会变。 (4)如果实例创建之初,有PublicIP,然后再关联了ElasticIP的话,二者都会变成ElasticIP的样子(被覆盖),当EIP被解除关联之后,PublicIP才会被显露,但此时会重新分配PublicIP,所以PublicIP会变。 所以,如果在EC2实例的生命周期内,有停机再开机的可能,还是使用EIP比较保险 ———————————————— 版权声明:本文为CSDN博主「fedora18」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/fedora18/article/details/44219493

vpc

ALB

https://www.eksworkshop.com/docs/fundamentals/exposing/ingress/multiple-ingress/


https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/alb-ingress.html

role

如果角色已经存在,只需两步就能把现有角色改成“RDS 可用”:

    改信任关系(Trust relationship)

IAM → Roles → 选中你的角色 → Trust relationships 标签 → Edit trust policy
把内容替换成下面这段(只保留一条 Statement,Principal 写死 rds.amazonaws.com):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

→ Update policy
(这一步就让 RDS 有权限代入该角色)

2.    挂 S3 写权限(如果还没挂)

还是在同一个角色页面 → Permissions 标签 → Add permissions → Create inline policy → JSON 模式:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::mslog",
        "arn:aws:s3:::mslog/*"
      ]
    }
  ]
}
→ Review → 名字随便起(如 mslog-rds-s3)→ Create policy
完事
角色 ARN 不变,直接拿它填到 SQLSERVER_AUDIT 选项的 IAM_ROLE_ARN 即可,无需重新建角色。


rule

#复制 AWS Config Rule(同账号同Region)
import boto3
import json

def copy_config_rule(source_rule_name, target_rule_name, description_suffix=" (copy)"):
    client = boto3.client('config')

    # 获取原规则定义
    response = client.describe_config_rules(ConfigRuleNames=[source_rule_name])
    rules = response.get("ConfigRules", [])

    if not rules:
        print(f"❌ 未找到规则: {source_rule_name}")
        return

    rule = rules[0]

    # 删除不允许出现在 put-config-rule 的字段
    for key in ["ConfigRuleId", "ConfigRuleArn", "CreatedBy"]:
        rule.pop(key, None)

    # 修改名称和描述
    rule["ConfigRuleName"] = target_rule_name
    if "Description" in rule:
        rule["Description"] += description_suffix
    else:
        rule["Description"] = f"Copied from {source_rule_name}"

    # 重新创建规则
    try:
        client.put_config_rule(ConfigRule=rule)
        print(f"✅ 成功复制规则: {source_rule_name} → {target_rule_name}")
    except Exception as e:
        print(f"❌ 创建规则失败: {e}")

if __name__ == "__main__":
    # 示例
    SOURCE_RULE = "required-tags"          # 要复制的原规则名
    TARGET_RULE = "required-tags-copy"     # 新规则名

    copy_config_rule(SOURCE_RULE, TARGET_RULE)

AWSS3

#pre 配置好aws cli 相关配置和key
➜  ~ aws s3 ls 
2025-06-30 21:56:24 evan886
➜  ~ aws s3 ls  s3://evan886
➜  ~ echo "s3test" >tests3.txt
➜  ~ aws s3 cp tests3.txt  s3://evan886
upload: ./tests3.txt to s3://evan886/tests3.txt   

打开web界面确认一下 

➜  ~ aws s3 cp s3://evan886/tests3.txt ts3.txt
download: s3://evan886/tests3.txt to ./ts3.txt                 
➜  ~ cat ts3.txt 
s3test

➜  ~ aws s3 rm s3://evan886/tests3.txt
delete: s3://evan886/tests3.txt
➜  ~ aws s3 rm s3://evan886  --recursive 
➜  ~ aws s3 ls s3://evan886
➜  ~ 

boto3

aws Lambda

【粤语】Serverless _ AWS Lambda有趣的介绍


1.1 what is lambda https://www.bilibili.com/video/BV1z4411E7gE/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714

AWS Lambda零基础入门 25分钟学会Python核心技能 🌟

https://www.bilibili.com/video/BV1pcQmYuEFc/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714


➜  lambda py3  main.py
b'{"statusCode": 200, "body": "\\"File uploaded successfully!\\""}'
➜  lambda cat main.py
import json
import boto3
import base64
client = boto3.client('lambda')

with open('example.txt','rb') as file:
    file_content = base64.b64encode(file.read()).decode('utf-8')

payload = {
    'file_name': 'uploaded_example.txt',
    'file_content': file_content

        }


response = client.invoke(
    #FunctionName='string-reversal',
    FunctionName='s3lambda',
    Payload=json.dumps(payload)
)

print(response['Payload'].read())
➜  lambda 


#my lmabda  name :s3lambda

import json
import boto3
import base64

s3_client = boto3.client('s3',region_name='us-west-1')
def lambda_handler(event, context):


    file_name = event['file_name']
    file_content = event['file_content']

    if not file_name or  not file_content:
        return {
            'statusCode': 400,
            'body': json.dumps('missing File name and content are required!')
        }
    try:
        file_content = base64.b64decode(file_content)

        s3_client.put_object(Bucket='mylambdafancy', Key=file_name, Body=file_content)

        return {
            'statusCode': 200,
            'body': json.dumps('File uploaded successfully!')
        }

    except Exception as e:
        print(e)
        return {
            'statusCode': 500,
            'body': json.dumps('Error uploading file!' + str(e))
        }



SSM

25:00 33:00: 60:00 1:03 也只是讲知识点为了考试 而已 jan 10 2026 Done https://www.bilibili.com/video/BV1vw41197xW/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714

伯乐大典】AWS Systems Manager知识点梳理|亚马逊|云计算|解决方案架构师|SAA|SAP|DevOps

AWS SAP - 9.5 部署 - AWS system manager (SSM)

automation document 只是带过而已 https://www.bilibili.com/video/BV1oG411z7ap/?spm_id_from=333.337.search-card.all.click&vd_source=e3e41ea2b1d70e0e3a6a0372ee88d714


SSM Automation

ACM

how to check if the cert chain had been upgrade to remove starfield c2

ACM will no longre cros sign certificates with starfield class 2 starting

https://www.ssllabs.com/ssltest/


https://repost.aws/questions/QU7ZP_50i7T_qpjN7ZikSHjQ/how-to-solve-new-amazon-public-certificates-no-longer-chain-to-the-starfield-class-2-certification-authorit

https://aws.amazon.com/cn/blogs/security/acm-will-no-longer-cross-sign-certificates-with-starfield-class-2-starting-august-2024/

py

file.txt

#txt
wiki.linuxchina.net
www.google.com
www.github.com
www.baidu.com

# 这是注释,会被自动忽略
example.com
yourdomain.com



#pyfile
import ssl
import socket
import sys
from OpenSSL import crypto

# ======================
# ✅ 从 hosts.txt 文件中读取域名列表
# ======================
HOSTS_FILE = "hosts.txt"  # 确保此文件与脚本在同一目录,或修改为绝对路径

# Starfield 相关关键词
STARFIELD_KEYWORDS = [
    "Starfield Technologies, Inc.",
    "Starfield Class 2 Certification Authority"
]

def read_domains_from_file(filename):
    """从文件中读取域名列表,自动跳过空行和以 # 开头的注释行"""
    domains = []
    try:
        with open(filename, "r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()  # 去掉首尾空格和换行
                if not line or line.startswith("#"):
                    continue  # 跳过空行和注释
                domains.append(line)
    except FileNotFoundError:
        print(f"[❌] 错误:找不到文件 '{filename}',请确保它与脚本在同一目录。")
        sys.exit(1)
    except Exception as e:
        print(f"[❌] 读取文件时出错:{e}")
        sys.exit(1)
    return domains

def get_certificate_chain(domain, port=443):
    """获取域名证书链(返回 OpenSSL X509 对象列表)"""
    cert_chain = []
    try:
        ctx = ssl.create_default_context()
        with socket.create_connection((domain, port), timeout=10) as sock:
            with ctx.wrap_socket(sock, server_hostname=domain) as ssock:
                der_certs = ssock.getpeercert(chain=True)
                if not der_certs:
                    print(f"[!] 域名 {domain}:无法获取证书链")
                    return []
                for der_cert in der_certs:
                    cert = crypto.load_certificate(crypto.FILETYPE_ASN1, der_cert)
                    cert_chain.append(cert)
    except Exception as e:
        print(f"[!] 域名 {domain}:获取证书时出错 - {e}")
        return []
    return cert_chain

def check_starfield_issuer(cert):
    """检查证书的 Issuer 是否包含 Starfield 关键词"""
    try:
        issuer = cert.get_issuer()
        issuer_str = issuer.rfc4514_string()
        for keyword in STARFIELD_KEYWORDS:
            if keyword in issuer_str:
                return True
    except Exception as e:
        print(f"[!] 域名 {cert.get_subject().rfc4514_string()}:解析 Issuer 出错 - {e}")
    return False

def analyze_domain(domain):
    """分析单个域名的证书链是否包含 Starfield"""
    print(f"\n" + "="*50)
    print(f"🔍 正在检查域名:{domain}")
    chain = get_certificate_chain(domain)

    if not chain:
        print(f"❌ 域名 {domain}:无法获取证书链,跳过。")
        return

    print(f"📜 共获取到 {len(chain)} 个证书。")

    found_starfield = False
    for idx, cert in enumerate(chain):
        try:
            subject = cert.get_subject().rfc4514_string()
            issuer = cert.get_issuer().rfc4514_string()

            print(f"\n🔒 证书 #{idx + 1}:")
            print(f"   Subject(使用者): {subject}")
            print(f"   Issuer(颁发者): {issuer}")

            if check_starfield_issuer(cert):
                print("   ⚠️ [发现] 该证书由 Starfield Class 2 或相关 CA 签发!")
                found_starfield = True
            else:
                print("   ✅ [安全] 该证书与 Starfield Class 2 无关。")
        except Exception as e:
            print(f"   ⚠️ 解析证书 #{idx+1} 时出错:{e}")

    if found_starfield:
        print(f"\n🔴 结论({domain}):❌ 证书链 **仍然包含 Starfield Class 2,尚未移除。**")
    else:
        print(f"\n🟢

list

import ssl
import socket
import sys
from OpenSSL import crypto

# ======================
# ✅ 在这里设置你要检查的域名列表
# ======================
DOMAINS = [
    "wiki.linuxchina.net",
    "www.google.com",
    "www.github.com",
    "www.baidu.com",
    # 你可以继续添加更多域名,例如:
    # "example.com",
    # "yourdomain.com",
]

# Starfield 相关关键词(用于检查 Issuer)
STARFIELD_KEYWORDS = [
    "Starfield Technologies, Inc.",
    "Starfield Class 2 Certification Authority"
]

def get_certificate_chain(domain, port=443):
    """获取指定域名的证书链(返回 OpenSSL X509 对象列表)"""
    cert_chain = []
    try:
        ctx = ssl.create_default_context()
        with socket.create_connection((domain, port), timeout=10) as sock:
            with ctx.wrap_socket(sock, server_hostname=domain) as ssock:
                der_certs = ssock.getpeercert(chain=True)
                if not der_certs:
                    print(f"[!] 域名 {domain}:无法获取证书链")
                    return []
                for der_cert in der_certs:
                    cert = crypto.load_certificate(crypto.FILETYPE_ASN1, der_cert)
                    cert_chain.append(cert)
    except Exception as e:
        print(f"[!] 域名 {domain}:获取证书时出错 - {e}")
        return []
    return cert_chain

def check_starfield_issuer(cert):
    """检查单个证书的 Issuer 是否包含 Starfield 关键词"""
    try:
        issuer = cert.get_issuer()
        issuer_str = issuer.rfc4514_string()  # 标准格式的 Issuer DN
        for keyword in STARFIELD_KEYWORDS:
            if keyword in issuer_str:
                return True
    except Exception as e:
        print(f"[!] 域名 {cert.get_subject().rfc4514_string()}:解析 Issuer 出错 - {e}")
    return False

def analyze_domain(domain):
    """分析单个域名的证书链是否包含 Starfield"""
    print(f"\n" + "="*50)
    print(f"🔍 正在检查域名:{domain}")
    chain = get_certificate_chain(domain)

    if not chain:
        print(f"❌ 域名 {domain}:无法获取证书链,跳过。")
        return

    print(f"📜 共获取到 {len(chain)} 个证书。")

    found_starfield = False
    for idx, cert in enumerate(chain):
        try:
            subject = cert.get_subject().rfc4514_string()
            issuer = cert.get_issuer().rfc4514_string()

            print(f"\n🔒 证书 #{idx + 1}:")
            print(f"   Subject(使用者): {subject}")
            print(f"   Issuer(颁发者): {issuer}")

            if check_starfield_issuer(cert):
                print("   ⚠️ [发现] 该证书由 Starfield Class 2 或相关 CA 签发!")
                found_starfield = True
            else:
                print("   ✅ [安全] 该证书与 Starfield Class 2 无关。")
        except Exception as e:
            print(f"   ⚠️ 解析证书 #{idx+1} 时出错:{e}")

    if found_starfield:
        print(f"\n🔴 结论({domain}):❌ 证书链 **仍然包含 Starfield Class 2,尚未移除。**")
    else:
        print(f"\n🟢 结论({domain}):✅ 证书链 **没有发现 Starfield Class 2,已升级/移除。**")

def main():
    print("[🚀] 开始批量检查多个域名的证书链是否包含 Starfield Class 2...")
    for domain in DOMAINS:
        analyze_domain(domain)
    print("\n" + "="*50)
    print("[✅] 所有域名检查完毕!")

if __name__ == "__main__":
    main()

好的!下面我将为你提供一个 一键检查脚本,用于 自动化检查某个域名(比如 wiki.linuxchina.net)的 SSL 证书链,判断是否包含 Starfield Class 2 认证机构(CA)。

✅ 脚本功能

功能 是否支持

输入一个域名(如 wiki.linuxchina.net) ✅

自动获取该域名的 SSL 证书链 ✅(使用 OpenSSL 或 Python 内置库)

自动分析证书链中的每个证书 ✅

检查是否存在 Starfield Technologies, Inc. 以及 Starfield Class 2 Certification Authority ✅

输出清晰的结果:是否包含 Starfield Class 2 ✅

支持 Shell 脚本(Bash) 和 Python 脚本 两种方式 ✅ 两种都提供

🧩 方法一:Python 脚本(推荐,跨平台,无需额外依赖)

适用于 Linux、macOS、Windows(需安装 Python 3)

✅ 脚本名称:check_starfield_in_chain.py

import ssl
import socket
import sys
from OpenSSL import crypto

# 要检查的域名
DOMAIN = "wiki.linuxchina.net"  # 你可以修改为任意域名

# Starfield 相关关键词
STARFIELD_KEYWORDS = [
    "Starfield Technologies, Inc.",
    "Starfield Class 2 Certification Authority"
]

def get_certificate_chain(domain, port=443):
    """获取指定域名的证书链(返回 OpenSSL.crypto.X509 对象列表)"""
    cert_chain = []

    try:
        # 创建 SSL 上下文
        ctx = ssl.create_default_context()
        with socket.create_connection((domain, port)) as sock:
            with ctx.wrap_socket(sock, server_hostname=domain) as ssock:
                # 获取证书链(底层是 OpenSSL 对象)
                der_certs = ssock.getpeercert(chain=True)
                if not der_certs:
                    print("[!] 无法获取证书链。")
                    return []

                for der_cert in der_certs:
                    cert = crypto.load_certificate(crypto.FILETYPE_ASN1, der_cert)
                    cert_chain.append(cert)
    except Exception as e:
        print(f"[!] 获取证书时出错: {e}")
        return []

    return cert_chain

def check_starfield_issuer(cert):
    """检查单个证书的 Issuer 是否包含 Starfield 关键词"""
    try:
        issuer = cert.get_issuer()
        issuer_str = issuer.rfc4514_string()  # 或使用其他格式
        # 也可以用:issuer.get_components() 手动解析
        for keyword in STARFIELD_KEYWORDS:
            if keyword in issuer_str:
                return True
    except Exception as e:
        print(f"[!] 解析证书 Issuer 出错: {e}")
    return False

def main():
    print(f"🔍 正在检查域名:{DOMAIN}")
    chain = get_certificate_chain(DOMAIN)

    if not chain:
        print("[❌] 未能获取到证书链,请检查网络或域名是否正确。")
        return

    print(f"📜 共获取到 {len(chain)} 个证书。")

    found_starfield = False
    for idx, cert in enumerate(chain):
        issuer_str = cert.get_issuer().rfc4514_string()
        subject_str = cert.get_subject().rfc4514_string()

        print(f"\n🔒 证书 #{idx + 1}:")
        print(f"   Subject (使用者): {subject_str}")
        print(f"   Issuer  (颁发者): {issuer_str}")

        if check_starfield_issuer(cert):
            print("   ⚠️  [发现] 该证书由 Starfield Class 2 或相关 CA 签发!")
            found_starfield = True
        else:
            print("   ✅ [安全] 该证书与 Starfield Class 2 无关。")

    if found_starfield:
        print("\n🔴 结论:该域名的证书链 **仍然包含 Starfield Class 2 相关证书,尚未移除。**")
    else:
        print("\n🟢 结论:该域名的证书链 **没有发现 Starfield Class 2,已经升级/移除。**")

if __name__ == "__main__":
    main()


🧰 运行方法(Python 脚本)

1. 确保你已安装 Python 3

在终端 / CMD 中运行:
python --version


或
python3 --version


确保是 Python 3.6 或更高版本

2. 安装依赖库:pyOpenSSL

运行以下命令安装:
pip install pyopenssl


或
pip3 install pyopenssl


3. 将上面的代码保存为:

📄 check_starfield_in_chain.py

4. 运行脚本:

python check_starfield_in_chain.py


或
python3 check_starfield_in_chain.py


5. 查看输出

脚本会:

• 显示该域名的证书链中有几个证书

• 逐个显示每个证书的 Subject(使用者) 和 Issuer(颁发者)

• 如果某个证书的 Issuer 包含 Starfield Technologies, Inc. 或 Starfield Class 2 Certification Authority,就会提示发现

• 最后给出结论:是否仍然包含 Starfield Class 2

🧩 方法二:Shell 脚本(Bash + OpenSSL)—— 适用于 Linux / macOS

如果你更喜欢用 Shell 脚本,且你的系统支持 openssl 命令,可以使用这个简化版本:

✅ 脚本名称:check_starfield.sh

#!/bin/bash

DOMAIN="wiki.linuxchina.net"  # 你可以修改这个域名

echo "🔍 正在检查域名:$DOMAIN 的证书链..."

echo "--------------------------------------------------"
echo "📡 获取证书链信息:"

openssl s_client -showcerts -connect "$DOMAIN":443 2>/dev/null <<EOF | awk '
BEGIN { in_cert=0; cert_count=0 }
/-----BEGIN CERTIFICATE-----/ { in_cert=1; cert_count++ ; print "\n🔒 证书 #' cert_count }
/-----END CERTIFICATE-----/ { in_cert=0; print "" }
in_cert { print }
' | grep -A1000 "-----BEGIN CERTIFICATE-----"

echo "--------------------------------------------------"
echo "🔍 开始分析 Issuer 是否包含 Starfield ..."

# 提取所有证书并分析 Issuer
echo | openssl s_client -connect "$DOMAIN":443 2>/dev/null | \
  awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/' | \
  awk 'BEGIN { RS="-----END CERTIFICATE-----"; FS="\n" } 
       NR>0 { 
         cert = $0 "-----END CERTIFICATE-----";
         cmd = "echo \"" cert "\" | openssl x509 -noout -issuer 2>/dev/null";
         cmd | getline issuer;
         close(cmd);
         if (issuer ~ /Starfield Technologies, Inc.|Starfield Class 2 Certification Authority/) {
           print "⚠️ [发现] Starfield 相关 Issuer: " issuer;
           found=1;
         } else if (issuer) {
           print "✅ 证书 Issuer: " issuer;
         }
       }'

if [ "$found" = "1" ]; then
  echo "🔴 结论:该域名证书链 **包含 Starfield Class 2,尚未移除。**"
else
  echo "🟢 结论:该域名证书链 **没有发现 Starfield Class 2,已升级/移除。**"
fi


⚠️ 注意:这个 Shell 版本是简化逻辑,可能不如 Python 版精准,但也能大致分析。

✅ 推荐使用:Python 脚本

对比项 Python 脚本 Shell 脚本

精准度 ✅ 高(使用 pyOpenSSL 解析 Issuer 更准确) ⚠️ 一般(依赖 grep / awk,可能漏判)

跨平台 ✅ 支持 Win/Linux/macOS ✅ 但需系统有 openssl

易用性 ✅ 一键运行,输出清晰 ⚠️ 需要赋予执行权限,解析略原始

推荐程度 ⭐⭐⭐⭐⭐ ⭐⭐⭐

✅ 总结

你想要的功能 解决方案

一键检查某个域名(如 wiki.linuxchina.net)的证书链是否包含 Starfield Class 2 ✅ 提供了 Python 脚本(推荐)和 Shell 脚本 两个版本

自动获取证书链并分析 Issuer ✅ 脚本自动获取 + 关键词匹配

输出是否仍依赖 Starfield ✅ 最后给出明确结论:已移除 / 仍然存在

是否需要安装额外工具 Python 版:仅需 pyOpenSSL(pip install pyopenssl)<br>Shell 版:需要系统有 openssl 命令(一般都有)

📦 下一步

1. 推荐直接使用 Python 脚本(更精准、易读、跨平台)。
2. 将脚本中的 DOMAIN = "wiki.linuxchina.net" 替换为你想检查的任意域名。
3. 运行后,你将立刻知道:
   • 该域名是否仍然使用 Starfield Class 2

   • 证书链的构成是否安全

🔧 如你希望我帮你打包成可执行文件(如 Windows 的 .exe 或 Linux 的可运行脚本),或加入 GUI 界面、批量检查多个域名,也欢迎继续告诉我!

我可以继续帮你优化这个工具!🛠️🔒🔍
当然!以下是 中文版本 的详细说明,帮助你检查 证书链(Certificate Chain)是否已经移除 Starfield Class 2 根证书/中间证书(C2)。

🎯 问题背景

你可能想确认:

某个网站(或服务器)的 SSL/TLS 证书链,是否已经更新,不再包含 Starfield Class 2 认证机构(CA)?

换句话说,你想知道:

• 该网站当前使用的证书链中,是否 还依赖 Starfield Class 2 这个老旧的中间证书或根证书?

• 如果你 是网站管理员,如何确认并升级证书链,以 移除 Starfield Class 2?

🧩 什么是 Starfield Class 2 CA?

Starfield Class 2 Certification Authority(Starfield Class 2 CA,简称 C2) 是由 Starfield Technologies(星域科技) 提供的一个 根证书(Root CA)或中间证书(Intermediate CA),它是 GoDaddy(狗爹)旗下 的一个旧 CA。

• 过去,很多 GoDaddy 签发的 SSL 证书,会使用 Starfield 的中间证书 做为信任链的一部分。

• 但现在,GoDaddy 和大多数证书颁发机构(CA)都已经逐步淘汰 Starfield Class 2,改用更现代、更安全的根证书,比如:

  • GoDaddy R3 / R4

  • Let's Encrypt(ISRG Root X1)

  • DigiCert、Sectigo 等

✅ 你的目标

检查某个网站(比如 example.com)的 SSL 证书链中,是否还包含 Starfield Class 2 这个机构,如果包含,说明还没移除;如果不包含,说明已经升级。

🛠 方法一:使用 OpenSSL 命令行(推荐,准确)

🔧 第一步:获取网站的证书链

打开 命令提示符(Windows CMD / PowerShell)或终端(Mac / Linux),运行以下命令:
openssl s_client -showcerts -connect example.com:443


✅ 将 example.com 替换为你要检查的域名,比如 www.baidu.com、www.yourdomain.com  

❗ 在 Windows 上不需要 < /dev/null,直接运行即可,按回车后等待连接完成,然后按 Ctrl + C 停止。

这条命令会输出该网站在 TLS 握手时返回的 证书链,包括:
• 服务器证书(属于你的网站)

• 中间证书(由 CA 签发)

• (通常不包括根证书,因为根证书已经在操作系统或浏览器的信任库中)

🔍 第二步:查找 Starfield Class 2 相关信息

在输出的内容中,找到类似这样的块:

Certificate chain
 0 s:/CN=www.example.com
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=GoDaddy Secure Certificate Authority - G2
-----BEGIN CERTIFICATE-----
...(你的网站证书内容)
-----END CERTIFICATE-----
 1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=GoDaddy Secure Certificate Authority - G2
   i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
-----BEGIN CERTIFICATE-----
...(中间证书,由 Starfield 签发)
-----END CERTIFICATE-----


重点查看每一块的这一行:

i: /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority


• i: 表示 Issuer(颁发者,即上一级证书是谁签发的)

• s: 表示 Subject(证书本身的身份,通常是你的域名或 CA 名称)

🔍 你要找的关键字段:

字段 值(中文解释)

O (Organization) Starfield Technologies, Inc.(星域科技公司)

OU (Organizational Unit) Starfield Class 2 Certification Authority(Starfield Class 2 认证机构)

C (Country) US(美国)

ST / L 通常是 Arizona、Scottsdale

如果 任何证书的 Issuer(i:)中包含这些字段,就说明该证书是由 Starfield Class 2 签发(或中间传递)的,也就是说 你的证书链仍然依赖 Starfield Class 2。

✅ 如果你没有看到任何类似上述信息

→ 恭喜,该网站的证书链已经不包含 Starfield Class 2,说明已经升级/移除了。

🛠 方法二:使用在线工具(无需命令行,适合小白)

如果你不想用命令行,可以使用以下 免费的在线 SSL 证书检测工具,它们会直观地展示证书链,并列出每个证书的颁发者和主题:

🔗 推荐工具:

1. https://www.ssllabs.com/ssltest/
   • 输入你要检查的域名,例如:www.example.com

   • 点击提交后,等待分析完成

   • 在 “证书” 部分,查看 证书链(Certification Paths)

   • 它会列出 每一个证书的颁发者(Issuer)和使用者(Subject)

   • 你可以一眼看出有没有 Starfield Technologies 或 Starfield Class 2

2. https://crt.sh/
   • 搜索你的域名,例如:example.com

   • 查看当前有效的证书,以及它们的 证书链

   • 可以查看每个证书的 颁发者信息

🧠 Starfield Class 2 的常见标识(用于查找)

在证书详情中,寻找如下信息:

属性 值

颁发者 (Issuer) O = Starfield Technologies, Inc., OU = Starfield Class 2 Certification Authority, C = US

国家 (C) US

组织 (O) Starfield Technologies, Inc.

组织单位 (OU) Starfield Class 2 Certification Authority

如果证书链中的 某个证书的 “颁发者” 是这个,就说明 Starfield Class 2 仍在你的证书信任链中。

🔄 如果你是网站管理员,如何移除 Starfield Class 2?

如果你 自己管理网站或服务器的 SSL 证书,想要 移除 Starfield Class 2,可以这样做:

1. 重新申请证书(推荐)

• 去你的证书提供商(如 GoDaddy、Let's Encrypt、DigiCert 等)重新申请一张新的 SSL 证书。

• 大多数主流 CA 现在 默认使用最新的中间证书,不再依赖 Starfield。

2. 检查你的服务器证书链配置

• 比如在 Nginx、Apache、IIS 中,你可能手动指定了证书和中间证书文件。

• 确保你没有手动添加旧的 Starfield 中间证书。

• 使用你的 CA(如 GoDaddy)提供的 最新中间证书链文件。

3. 不要包含根证书

• 只需提供:

  • 你的 域名证书

  • 必要的 中间证书(Intermediate CA)

• 不要包含根证书(Root CA),因为客户端(浏览器/操作系统)已经内置了信任的根证书。

✅ 总结:如何检查证书链是否已移除 Starfield Class 2

操作 方法

🔍 检查某个网站的证书链 使用:<br> • 命令行:openssl s_client -connect example.com:443 -showcerts<br> • 在线工具:https://www.ssllabs.com/ssltest/、https://crt.sh/

🔎 查找 Starfield Class 2 在证书的 Issuer(颁发者) 字段中查找:<br> O = Starfield Technologies, Inc.<br> OU = Starfield Class 2 Certification Authority<br> C = US

✅ 如果没有找到 说明证书链已经 不依赖 Starfield Class 2,已经升级/移除

❌ 如果找到 说明你的证书链 仍然使用 Starfield Class 2(建议更新)

🛠 如果你是管理员 重新申请证书,使用最新的中间证书链,不要手动添加旧 CA 证书

❓ 还需要我帮你检查某个具体的网站吗?

你可以把你想检查的 域名(比如 www.xxx.com) 发给我,我可以指导你:

• 如何解读 openssl 的输出

• 或者直接帮你分析该站点的证书链是否还包含 Starfield Class 2

如你希望,我也可以提供一个 一键检查脚本(Python 或 Shell) 来自动化这个过程!欢迎继续提问 😊🔐📘


https://docs.aws.amazon.com/AmazonS3/latest/userguide/GettingStartedS3CLI.html#GettingStartedS3CLI.step5

AWS的S3基本使用

云存储S3详解

一说就懂的 AWS S3

AWS入门实践-S3对象存储的基本用法

see also

快速入门aws


https://www.cnblogs.com/syavingcs/category/1817406.html

AWS使用教程(一)Amazon VPC

AWS探索及创建一个aws EC2实例


AWS云创建EC2与使用注意事项-踩坑记录

AWS 搭建 LVS+keepalived 步骤

Amazon EC2官方教程