Skip to content

add workflows: ssl cert workflow #3

add workflows: ssl cert workflow

add workflows: ssl cert workflow #3

name: Generate and Release SSL Certificates
on:
pull_request:
paths:
- '.github/workflows/ssl-cert-workflow.yml'
workflow_dispatch:
inputs:
domain:
description: 'Domain Name (e.g., example.com)'
required: true
default: 'example.com'
valid_days:
description: 'Certificate Validity (Days)'
required: true
default: '365'
jobs:
generate-cert:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Generate Self-Signed Certificate
run: |
DOMAIN="{{ inputs.domain }}"
VALID_DAYS="{{ inputs.valid_days }}"
echo "Generating certificate for domain: $DOMAIN with validity: $VALID_DAYS days"
# 生成 CA 私钥
openssl genrsa -out ca.key 2048
# 生成 CA 证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days "$VALID_DAYS" -out ca.cert -subj "/C=CN/ST=State/L=City/O=Company/OU=Org/CN=Custom-CA"
# 生成服务器私钥
openssl genrsa -out domain_ssl.key 2048
# 生成 CSR(证书签名请求)
openssl req -new -key domain_ssl.key -out domain_ssl.csr -subj "/C=CN/ST=State/L=City/O=Company/OU=Org/CN=$DOMAIN"
# 生成服务器证书
openssl x509 -req -in domain_ssl.csr -CA ca.cert -CAkey ca.key -CAcreateserial -out domain_ssl.cert -days "$VALID_DAYS" -sha256
# 清理 CSR 文件
rm -f domain_ssl.csr
- name: Package Certificates
run: |
mkdir -p ssl_certificates
mv ca.cert ca.key domain_ssl.cert domain_ssl.key ssl_certificates/
tar -czvf ssl_certificates.tar.gz -C ssl_certificates .
- name: Upload Certificates as Artifact
uses: actions/upload-artifact@v4
with:
name: ssl-certificates
path: ssl_certificates.tar.gz
- name: Create GitHub Release
id: create_release
if: github.event_name == 'workflow_dispatch'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG_NAME="ssl-cert-${{ github.run_id }}"
gh release create "$TAG_NAME" ssl_certificates.tar.gz --title "SSL Certificates for {{ inputs.domain }}" --notes "Generated SSL certificates for {{ inputs.domain }} valid for {{ inputs.valid_days }} days."