{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ssl",
    "name": "SSL",
    "source": "tencent",
    "type": "skill",
    "category": "安全合规",
    "sourceUrl": "https://clawhub.ai/ivangdavila/ssl",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/ssl",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ssl",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ssl",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "formats.md",
      "servers.md",
      "troubleshooting.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "ssl",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T12:08:01.835Z",
      "expiresAt": "2026-05-06T12:08:01.835Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ssl",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ssl",
        "contentDisposition": "attachment; filename=\"ssl-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "ssl"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ssl"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ssl",
    "agentPageUrl": "https://openagent3.xyz/skills/ssl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ssl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ssl/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Triggers",
        "body": "Activate on: SSL certificate, HTTPS setup, Let's Encrypt, certbot, TLS configuration, certificate expired, mixed content, certificate chain error."
      },
      {
        "title": "Core Tasks",
        "body": "TaskTool/MethodGet free certcertbot, acme.sh, Caddy (auto)Check cert statusopenssl s_client -connect host:443View cert detailsopenssl x509 -in cert.pem -text -nooutTest configssllabs.com/ssltest or testssl.shConvert formatsSee formats.md"
      },
      {
        "title": "Quick Cert Commands",
        "body": "# Let's Encrypt with certbot (most common)\ncertbot certonly --nginx -d example.com -d www.example.com\n\n# Check expiry\necho | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates\n\n# Verify chain is complete\nopenssl s_client -connect example.com:443 -servername example.com\n# Look for \"Verify return code: 0 (ok)\""
      },
      {
        "title": "Common Errors",
        "body": "ErrorCauseFixcertificate has expiredCert past valid dateRenew with certbot renewunable to verify / self signedMissing intermediate certInclude full chain in confighostname mismatchCert doesn't cover this domainGet cert for correct domain or add SANmixed contentHTTP resources on HTTPS pageChange all URLs to HTTPS or use //ERR_CERT_AUTHORITY_INVALIDSelf-signed or untrusted CAUse Let's Encrypt or install CA cert\n\nFor detailed troubleshooting steps, see troubleshooting.md."
      },
      {
        "title": "Server Config Patterns",
        "body": "Nginx:\n\nserver {\n    listen 443 ssl http2;\n    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\n}\n\nApache:\n\nSSLEngine on\nSSLCertificateFile /path/to/cert.pem\nSSLCertificateKeyFile /path/to/privkey.pem\nSSLCertificateChainFile /path/to/chain.pem\n\nFor Node.js, Caddy, Traefik, and HAProxy, see servers.md."
      },
      {
        "title": "Renewal",
        "body": "Let's Encrypt certs expire in 90 days. Always automate:\n\n# Test renewal\ncertbot renew --dry-run\n\n# Cron (certbot usually adds this)\n0 0 * * * certbot renew --quiet"
      },
      {
        "title": "Certificate Types",
        "body": "TypeUse caseSingle domainOne site (example.com)Wildcard (*.domain.com)All subdomainsMulti-domain (SAN)Multiple different domains on one certSelf-signedLocal dev only — browsers will warn"
      },
      {
        "title": "What This Doesn't Cover",
        "body": "Application auth (JWT, OAuth) → see oauth skill\nSSH keys → see linux or server skills\nVPN/tunnel setup → see networking skills\nFirewall configuration → see server/infrastructure skills"
      }
    ],
    "body": "Triggers\n\nActivate on: SSL certificate, HTTPS setup, Let's Encrypt, certbot, TLS configuration, certificate expired, mixed content, certificate chain error.\n\nCore Tasks\nTask\tTool/Method\nGet free cert\tcertbot, acme.sh, Caddy (auto)\nCheck cert status\topenssl s_client -connect host:443\nView cert details\topenssl x509 -in cert.pem -text -noout\nTest config\tssllabs.com/ssltest or testssl.sh\nConvert formats\tSee formats.md\nQuick Cert Commands\n# Let's Encrypt with certbot (most common)\ncertbot certonly --nginx -d example.com -d www.example.com\n\n# Check expiry\necho | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates\n\n# Verify chain is complete\nopenssl s_client -connect example.com:443 -servername example.com\n# Look for \"Verify return code: 0 (ok)\"\n\nCommon Errors\nError\tCause\tFix\ncertificate has expired\tCert past valid date\tRenew with certbot renew\nunable to verify / self signed\tMissing intermediate cert\tInclude full chain in config\nhostname mismatch\tCert doesn't cover this domain\tGet cert for correct domain or add SAN\nmixed content\tHTTP resources on HTTPS page\tChange all URLs to HTTPS or use //\nERR_CERT_AUTHORITY_INVALID\tSelf-signed or untrusted CA\tUse Let's Encrypt or install CA cert\n\nFor detailed troubleshooting steps, see troubleshooting.md.\n\nServer Config Patterns\n\nNginx:\n\nserver {\n    listen 443 ssl http2;\n    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\n}\n\n\nApache:\n\nSSLEngine on\nSSLCertificateFile /path/to/cert.pem\nSSLCertificateKeyFile /path/to/privkey.pem\nSSLCertificateChainFile /path/to/chain.pem\n\n\nFor Node.js, Caddy, Traefik, and HAProxy, see servers.md.\n\nRenewal\n\nLet's Encrypt certs expire in 90 days. Always automate:\n\n# Test renewal\ncertbot renew --dry-run\n\n# Cron (certbot usually adds this)\n0 0 * * * certbot renew --quiet\n\nCertificate Types\nType\tUse case\nSingle domain\tOne site (example.com)\nWildcard (*.domain.com)\tAll subdomains\nMulti-domain (SAN)\tMultiple different domains on one cert\nSelf-signed\tLocal dev only — browsers will warn\nWhat This Doesn't Cover\nApplication auth (JWT, OAuth) → see oauth skill\nSSH keys → see linux or server skills\nVPN/tunnel setup → see networking skills\nFirewall configuration → see server/infrastructure skills"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/ssl",
    "publisherUrl": "https://clawhub.ai/ivangdavila/ssl",
    "owner": "ivangdavila",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ssl",
    "downloadUrl": "https://openagent3.xyz/downloads/ssl",
    "agentUrl": "https://openagent3.xyz/skills/ssl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ssl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ssl/agent.md"
  }
}