diff --git a/.github/release-notes/v1.0.0.md b/.github/release-notes/v1.0.0.md new file mode 100644 index 0000000..cd5200a --- /dev/null +++ b/.github/release-notes/v1.0.0.md @@ -0,0 +1,32 @@ +# OCSP Server Test Suite v1.0.0 + +First release of the OCSP Server Test Suite — a comprehensive testing application for OCSP (Online Certificate Status Protocol) servers with both GUI and monitoring capabilities. The tool runs structured tests against OCSP servers and provides detailed reporting with exportable results. + +## Highlights + +- **Comprehensive OCSP testing** — protocol compliance, security, performance, and status validation +- **GUI application** — user-friendly Tkinter interface with real-time monitoring and a dedicated monitoring tab +- **OCSP by serial number or certificate** — query servers using either a certificate file (PEM/DER) or a raw serial number +- **Multi-step OCSP signer validation** — 3-step validation process with automatic trust chain building for OCSP signature verification +- **Federal PKI support** — automatic detection of federal PKI environments, batch OCSP responses (DHS CA4, DoD), and enhanced DHS CA4 signature verification handling +- **CRL monitoring** — Certificate Revocation List retrieval and validation, including large CRL processing +- **Complex OCSP requests** — IKEv2 in-band OCSP, signed client requests, nonce handling, cryptographic preference tests, and non-issued certificate tests +- **Configuration management** — persistent settings via `ocsp_config.json`, with save-config support +- **Export capabilities** — results exportable in JSON and CSV formats + +## Installation + +See the [README](https://github.com/jgoodloe/OCSPTesting/blob/main/README.md) for full setup instructions on Windows, Linux, and macOS. On Windows, the Quick Setup Guide uses [Scoop](https://scoop.sh) for Git/OpenSSL and the Microsoft Store for Python — no Git required if you download the project ZIP. + +**Requirements:** Python 3.10+ (with tkinter), OpenSSL CLI, and the pinned Python dependencies in `requirements.txt` (`cryptography`, `requests`, `asn1crypto`). + +```bash +python -m venv venv +source venv/bin/activate # Windows: venv\Scripts\activate +pip install -r requirements.txt +python app.py +``` + +## Changelog + +See [CHANGELOG.md](https://github.com/jgoodloe/OCSPTesting/blob/main/CHANGELOG.md) for notable changes, including the reworked Windows install instructions. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ed1aa26 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,64 @@ +name: Create Release + +on: + create: + push: + branches: + - "release/v*" + tags: + - "v*" + workflow_dispatch: + inputs: + tag: + description: "Tag to create the release under (e.g. v1.0.0)" + required: true + default: "v1.0.0" + +permissions: + contents: write + +jobs: + release: + if: >- + startsWith(github.ref, 'refs/tags/v') || + startsWith(github.ref, 'refs/heads/release/v') || + github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Create GitHub release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + case "$GITHUB_REF" in + refs/tags/*) + tag="${GITHUB_REF#refs/tags/}" + extra_args=(--verify-tag) + ;; + refs/heads/release/*) + tag="${GITHUB_REF#refs/heads/release/}" + extra_args=(--target "$GITHUB_SHA") + ;; + *) + tag="${{ inputs.tag }}" + extra_args=(--target "$GITHUB_SHA") + ;; + esac + + if gh release view "$tag" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then + echo "Release $tag already exists; nothing to do." + exit 0 + fi + + notes_file=".github/release-notes/${tag}.md" + if [ ! -f "$notes_file" ]; then + echo "Release notes file $notes_file not found" >&2 + exit 1 + fi + + gh release create "$tag" \ + --repo "$GITHUB_REPOSITORY" \ + --title "OCSP Server Test Suite $tag" \ + --notes-file "$notes_file" \ + "${extra_args[@]}"