Source profileQuality 87/100

AI-Shell-Team/aish/skills/ssl-cert-toolkit/SKILL.md

ssl-cert-toolkit

Review ssl-cert-toolkit's use cases, installation, workflow, and original source instructions.

Source repository stars
512
Declared platforms
0
Static risk flags
0
Last source update
2026-08-06
Source checked
2026-08-06

Decision brief

What it does—and where it fits

Use openssl on this host to inspect certificates, verify key/cert/CSR pairing, generate CSRs, convert common formats, and run simple validation.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/AI-Shell-Team/aish --skill "skills/ssl-cert-toolkit"
    Safe inspection promptEditorial

    Inspect the Agent Skill "ssl-cert-toolkit" from https://github.com/AI-Shell-Team/aish/blob/06f2347ecedddd4abc6d24434efe552ea0412e88/skills/ssl-cert-toolkit/SKILL.md at commit 06f2347ecedddd4abc6d24434efe552ea0412e88. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Simple verification

      Live site (read-only) when the user gives an HTTPS host:

      Live site (read-only) when the user gives an HTTPS host:
    2. 02

      Rules

      1. Clarify intent first: inspect / match / generate CSR / convert / verify—ask if unclear. 2. Confirm before writing files: confirm output paths; do not overwrite existing files unless asked. 3. Protect private keys: never paste key material into chat; suggest mode 0600; do not…

      Clarify intent first: inspect / match / generate CSR / convert / verify—ask if unclear.Confirm before writing files: confirm output paths; do not overwrite existing files unless asked.Protect private keys: never paste key material into chat; suggest mode 0600; do not log key bodies.
    3. 03

      Capabilities

      Review the “Capabilities” section in the pinned source before continuing.

      Review and apply the “Capabilities” source section.
    4. 04

      Inspect

      For PFX, ask for the password; prefer -passin env:CERTPASS over putting secrets on the command line:

      For PFX, ask for the password; prefer -passin env:CERTPASS over putting secrets on the command line:
    5. 05

      Match check (cert / key / CSR)

      Compare public keys (preferred) or RSA moduli. Each openssl extract must succeed and produce non-empty output before comparing:

      Compare public keys (preferred) or RSA moduli. Each openssl extract must succeed and produce non-empty output before comparing:Parse failure or empty digest → not MATCH. Equal non-empty digests → MATCH. Optional: openssl req -in -noout -verify (CSR signature; separate from key match).

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score87/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars512SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    AI-Shell-Team/aish
    Skill path
    skills/ssl-cert-toolkit/SKILL.md
    Commit
    06f2347ecedddd4abc6d24434efe552ea0412e88
    License
    Apache-2.0
    Collected
    2026-08-06
    Default branch
    main
    View the original SKILL.md

    SSL certificate toolkit

    Use openssl on this host to inspect certificates, verify key/cert/CSR pairing, generate CSRs, convert common formats, and run simple validation.

    Out of scope: cloud purchase/upload/deploy APIs, silently changing the system trust store, submitting CA requests for the user.

    Rules

    1. Clarify intent first: inspect / match / generate CSR / convert / verify—ask if unclear.
    2. Confirm before writing files: confirm output paths; do not overwrite existing files unless asked.
    3. Protect private keys: never paste key material into chat; suggest mode 0600; do not log key bodies.
    4. Dependency: require openssl (command -v openssl). keytool only for JKS.
    5. Stop when enough: after match/inspect succeeds, do not “optimize” unrelated files.
    6. Fail closed on match: if OpenSSL cannot parse an input, report that—never treat empty digests as MATCH.

    Capabilities

    IntentExample asks
    Inspectvalidity dates, SAN, issuer
    Matchare cert and key a pair; does CSR match
    Generate CSRcreate CSR to get a signed cert
    ConvertPEM ↔ PFX/P12, split chain
    Verifychain OK, expired or not

    Inspect

    openssl version
    openssl x509 -in <cert.pem> -noout -subject -issuer -dates -ext subjectAltName 2>/dev/null
    openssl x509 -in <cert.pem> -noout -text | head -80
    

    For PFX, ask for the password; prefer -passin env:CERT_PASS over putting secrets on the command line:

    openssl pkcs12 -in <file.pfx> -nokeys -clcerts -passin env:CERT_PASS
    

    Match check (cert / key / CSR)

    Compare public keys (preferred) or RSA moduli. Each openssl extract must succeed and produce non-empty output before comparing:

    openssl x509 -in <cert.pem> -noout -pubkey | openssl md5
    openssl pkey -in <key.pem> -pubout | openssl md5
    openssl req -in <csr.pem> -noout -pubkey | openssl md5   # if CSR given
    

    Parse failure or empty digest → not MATCH. Equal non-empty digests → MATCH.
    Optional: openssl req -in <csr.pem> -noout -verify (CSR signature; separate from key match).

    Generate CSR

    Confirm CN/SAN, algorithm (default RSA 2048), and output directory.

    openssl req -new -newkey rsa:2048 -nodes \
      -keyout <domain>.key -out <domain>.csr \
      -subj "/CN=<domain>"
    
    openssl req -in <domain>.csr -noout -text | head -60
    

    With SAN, write a temporary san.cnf (user confirms) then:

    openssl req -new -newkey rsa:2048 -nodes \
      -keyout <domain>.key -out <domain>.csr \
      -config san.cnf -extensions v3_req
    

    ECDSA:

    openssl ecparam -genkey -name prime256v1 -out <domain>.key
    openssl req -new -key <domain>.key -out <domain>.csr -subj "/CN=<domain>"
    

    Remind: do not commit the private key; CSR can go to the CA.

    Format conversion

    Confirm inputs and target format first.

    openssl pkcs12 -export -out <out.pfx> -inkey <key.pem> -in <cert.pem> [-certfile chain.pem]
    openssl pkcs12 -in <in.pfx> -clcerts -nokeys -out cert.pem
    openssl pkcs12 -in <in.pfx> -nocerts -nodes -out key.pem
    openssl x509 -in <file> -noout -subject 2>/dev/null || openssl req -in <file> -noout -subject 2>/dev/null
    

    Handle JKS only if the user asks and keytool exists; otherwise prefer PEM/PFX.

    Simple verification

    openssl x509 -in <cert.pem> -noout -checkend 0 && echo 'not expired' || echo 'expired or invalid'
    openssl verify -CAfile <ca_or_chain.pem> <cert.pem>
    

    Live site (read-only) when the user gives an HTTPS host:

    echo | openssl s_client -connect <host>:443 -servername <host> 2>/dev/null | openssl x509 -noout -subject -dates
    

    Output format

    ## Conclusion
    What was done: inspect / match result / generated paths / conversion outputs.
    
    ## Evidence
    - Relevant openssl output (redacted; no private key body)
    - Digest comparison for match checks
    
    ## Recommendations
    - Next steps (submit CSR, deploy where, `chmod 600`)
    - Direction if expired or mismatched
    

    Reply in the user's language.

    Related skills

    CaseSkill
    Domain does not resolvedns-diagnose
    Network fails before TLSnetwork-path-diagnose

    Example

    User: Are server.crt and server.key a pair?

    1. Confirm readable paths
    2. Compare pubkey/modulus digests
    3. Conclude MATCH or name the mismatch