diff --git a/README.md b/README.md index 9555e63..a5137c8 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,13 @@

-**HTTPS Wrench** is a Golang CLI program to make HTTPS requests based on a YAML configuration file. -**HTTPS Wrench** was born from the desire of a disposable Bash script to become a reliable tool -for mechanics of the World Wide Web. -`https-wrench` will, one day, take the place of `curl` in the hearts and the eyes of whoever is about -to migrate a DNS record from a webserver to a load balancer, reverse proxy, Ingress Gateway, -CloudFront distribution. +**HTTPS Wrench** is a CLI program to make Yaml defined HTTPS requests and to +inspect x.509 certificates and keys.\ +**HTTPS Wrench** was born from the desire of a disposable Bash script to become +a reliable tool for mechanics of the World Wide Web.\ +`https-wrench` will, one day, take the place of `curl` in the hearts and the +eyes of whoever is about to migrate a DNS record from a webserver to a load +balancer, reverse proxy, Ingress Gateway, CloudFront distribution. ## How to use @@ -24,14 +25,28 @@ Check the help: ```bash ❯ https-wrench -h -HTTPS Wrench, a tool to make HTTPS requests based on a YAML configuration file + +HTTPS Wrench is a tool to make HTTPS requests according to a Yaml configuration file and to inspect x.509 certificates and keys. + +https-wrench has two subcommands: requests and certinfo. + +requests is the subcommand that does HTTPS requests according to the configuration provided +by the --config flag. + +certinfo is a subcommand that reads information from PEM encoded x.509 certificates and keys. The certificates +can be read from local files or TLS enabled endpoints. + +certinfo can compare public keys extracted from certificates and private keys to check if they match. + +HTTPS Wrench is distributed with an open source license and available at the following address: +https://github.com/xenOs76/https-wrench Usage: https-wrench [flags] https-wrench [command] Available Commands: - certinfo Show info about PEM certificates and keys + certinfo Shows information about x.509 certificates and keys completion Generate the autocompletion script for the specified shell help Help about any command requests Make HTTPS requests defined in the YAML configuration file @@ -45,8 +60,9 @@ Use "https-wrench [command] --help" for more information about a command. ``` Generate a sample config file: + ```bash -https-wrench requests --show-sample-config > sample-wrench.yaml +https-wrench requests --show-sample-config > https-wrench-sample-config.yaml ```
@@ -99,46 +115,61 @@ requests:
- Make the HTTPS requests defined in the YAML file: + ```bash -https-wrench requests --config sample-wrench.yaml +https-wrench requests --config https-wrench-sample-config.yaml ``` -
-Output of the commands - -The output should look like this: +Sample output of the commands: -![HTTPS Wrench - sample output](./assets/img/https-wrench-demo-sample-conf.gif "HTTPS Wrench - sample config output") +
+HTTPS Wrench requests, (long) sample configuration output +![HTTPS Wrench requests - sample config output](/assets/img/https-wrench_requests_sample-config.png "HTTPS Wrench - sample config output") +
-Or like this, if you customize one of the files in the [examples](./assets/examples/https-wrench-k3s.yaml) folder: +
+HTTPS Wrench requests, sample requests against a K3s cluster +![HTTPS Wrench - k3s output](/assets/img/https-wrench_requests_k3s.png "HTTPS Wrench - K3s requests output") +
-![HTTPS Wrench - k3s output](./assets/img/https-wrench-demo-k3s-example.gif "HTTPS Wrench - K3s requests output") +
+HTTPS Wrench certinfo, certificate and key +![HTTPS Wrench certinfo - certificate and key](/assets/img/https-wrench_certinfo_cert_and_key.png "HTTPS Wrench certinfo - certificate and key") +
+
+HTTPS Wrench certinfo, TLS Endpoint +![HTTPS Wrench certinfo - TLS Endpoint](/assets/img/https-wrench_certinfo_tls_endpoint.png "HTTPS Wrench certinfo - TLS Endpoint")
## How to install ### Go install -HTTPS Wrench is "go gettable", so it can be installed with the following command when having a proper `go` setup: +HTTPS Wrench is "go gettable", so it can be installed with the following command +when having a proper `go` setup: + ```bash go install github.com/xenos76/https-wrench@latest ``` ### Manual download -Release binaries and DEB, RPM, APK packages can be downloaded from the [repo's releases section](https://github.com/xenOs76/https-wrench/releases). -Binaries and packages are built for Linux and MacOS, `amd64` and `arm64`. +Release binaries and DEB, RPM, APK packages can be downloaded from the +[repo's releases section](https://github.com/xenOs76/https-wrench/releases).\ +Binaries and packages are built for Linux and MacOS, `amd64` and `arm64`. ### APT Configure the repo the following way: + ```bash echo "deb [trusted=yes] https://repo.os76.xyz/apt stable main" | sudo tee /etc/apt/sources.list.d/os76.list ``` -then: + +then: + ```bash sudo apt-get update && sudo apt-get install -y https-wrench ``` @@ -146,6 +177,7 @@ sudo apt-get update && sudo apt-get install -y https-wrench ### YUM Configure the repo the following way: + ```bash echo '[os76] name=OS76 Yum Repo @@ -154,54 +186,67 @@ enabled=1 gpgcheck=0 repo_gpgcheck=0' | sudo tee /etc/yum.repos.d/os76.repo ``` -then: + +then: + ```bash sudo yum install https-wrench ``` ### Docker image -Generate the config: +Generate the config: + ```bash docker run --rm ghcr.io/xenos76/https-wrench:latest -h docker run --rm ghcr.io/xenos76/https-wrench:latest --show-sample-config > sample-wrench.yaml ``` -Run the `requests` command: +Run the `requests` command: + ```bash docker run -v $(pwd)/sample-wrench.yaml:/https-wrench.yaml --rm ghcr.io/xenos76/https-wrench:latest --config /https-wrench.yaml requests ``` -### Homebrew +### Homebrew + +Add Os76 Homebrew repository: -Add Os76 Homebrew repository: ```bash brew tap xenos76/tap ``` -Install `https-wrench`: +Install `https-wrench`: + ```bash brew install --casks https-wrench ``` ### Nix/NUR -Nix users can use the following Nur repository to access `https-wrench`: [https://github.com/xenOs76/nur-packages](https://github.com/xenOs76/nur-packages). -The repository is not listed yet in the general [Nix User Repository](https://github.com/nix-community/NUR) so the following methods can be used to install the package. +Nix users can use the following Nur repository to access `https-wrench`: +[https://github.com/xenOs76/nur-packages](https://github.com/xenOs76/nur-packages).\ +The repository is not listed yet in the general +[Nix User Repository](https://github.com/nix-community/NUR) so the following +methods can be used to install the package. + +Set a Nix channel: -Set a Nix channel: ```bash nix-channel --add https://github.com/xenos76/nur-packages/archive/main.tar.gz nur-os76 nix-channel --update ``` -and add the package to a Nix shell: +and add the package to a Nix shell: + ```bash nix-shell -p '(import { pkgs = import {}; }).https-wrench' ``` -Or use a `flake.nix` like the one from the [nix-shell](/assets/examples/nix-shell) example to achieve a similar result: +Or use a `flake.nix` like the one from the +[nix-shell](/assets/examples/nix-shell) example to achieve a similar result: + ```nix { description = "Flake to fetch https-wrench from xenos76's NUR repo"; @@ -243,4 +288,6 @@ Or use a `flake.nix` like the one from the [nix-shell](/assets/examples/nix-shel } ``` -NixOS users could use a [flake like this](https://raw.githubusercontent.com/xenOs76/nixos-configs/refs/heads/main/flake.nix) to fetch the package. +NixOS users could use a +[flake like this](https://raw.githubusercontent.com/xenOs76/nixos-configs/refs/heads/main/flake.nix) +to fetch the package. diff --git a/assets/examples/vhs/https-wrench-demo-k3s-example.tape b/assets/examples/vhs/https-wrench-demo-k3s-example.tape deleted file mode 100644 index 889a635..0000000 --- a/assets/examples/vhs/https-wrench-demo-k3s-example.tape +++ /dev/null @@ -1,18 +0,0 @@ - -Output https-wrench-demo-k3s-example.gif -#Output https-wrench-demo-k3s-example.mp4 -#Output https-wrench-demo-k3s-example.webm - -Require echo -Require https-wrench - -Set Shell "bash" -Set FontSize 20 -Set FontFamily Hack -Set Theme catppuccin-frappe -Set Width 1500 -Set Height 1500 - -Type "https-wrench --config https-wrench-k3s.yaml requests" Enter - -Sleep 5s diff --git a/assets/examples/vhs/https-wrench-demo-sample-conf.tape b/assets/examples/vhs/https-wrench-demo-sample-conf.tape deleted file mode 100644 index d45fcbd..0000000 --- a/assets/examples/vhs/https-wrench-demo-sample-conf.tape +++ /dev/null @@ -1,21 +0,0 @@ - -Output https-wrench-demo-sample-conf.gif -#Output https-wrench-demo-sample-conf.mp4 -#Output https-wrench-demo-sample-conf.webm - -Require echo -Require https-wrench - -Set Shell "bash" -Set FontSize 20 -Set FontFamily Hack -Set Theme catppuccin-frappe -Set Width 1500 -Set Height 2000 - -Type "https-wrench -h" Sleep 500ms Enter -Type "https-wrench --show-sample-config > sample-wrench.yaml" Sleep 500ms Enter -Ctrl+l -Type "https-wrench --config sample-wrench.yaml requests" Enter - -Sleep 5s diff --git a/assets/img/https-wrench-demo-k3s-example.gif b/assets/img/https-wrench-demo-k3s-example.gif deleted file mode 100644 index ab9fd5e..0000000 Binary files a/assets/img/https-wrench-demo-k3s-example.gif and /dev/null differ diff --git a/assets/img/https-wrench-demo-sample-conf.gif b/assets/img/https-wrench-demo-sample-conf.gif deleted file mode 100644 index 26c9dc9..0000000 Binary files a/assets/img/https-wrench-demo-sample-conf.gif and /dev/null differ diff --git a/assets/img/https-wrench-logo.jpg b/assets/img/https-wrench-logo.jpg deleted file mode 100644 index 4d96b12..0000000 Binary files a/assets/img/https-wrench-logo.jpg and /dev/null differ diff --git a/assets/img/https-wrench_certinfo_cert_and_key.png b/assets/img/https-wrench_certinfo_cert_and_key.png new file mode 100644 index 0000000..2c94afe Binary files /dev/null and b/assets/img/https-wrench_certinfo_cert_and_key.png differ diff --git a/assets/img/https-wrench_certinfo_tls_endpoint.png b/assets/img/https-wrench_certinfo_tls_endpoint.png new file mode 100644 index 0000000..3ca7975 Binary files /dev/null and b/assets/img/https-wrench_certinfo_tls_endpoint.png differ diff --git a/assets/img/https-wrench_requests_k3s.png b/assets/img/https-wrench_requests_k3s.png new file mode 100644 index 0000000..1351df1 Binary files /dev/null and b/assets/img/https-wrench_requests_k3s.png differ diff --git a/assets/img/https-wrench_requests_sample-config.png b/assets/img/https-wrench_requests_sample-config.png new file mode 100644 index 0000000..d79cbef Binary files /dev/null and b/assets/img/https-wrench_requests_sample-config.png differ diff --git a/cmd/certinfo.go b/cmd/certinfo.go index 47429aa..f808f9c 100644 --- a/cmd/certinfo.go +++ b/cmd/certinfo.go @@ -22,9 +22,9 @@ var ( var certinfoCmd = &cobra.Command{ Use: "certinfo", - Short: "Shows information about PEM certificates and keys", + Short: "Shows information about x.509 certificates and keys", Long: ` -HTTPS Wrench certinfo: shows information about PEM certificates and keys. +HTTPS Wrench certinfo: shows information about PEM encoded x.509 certificates and keys. https-wrench certinfo can fetch certificates from a TLS endpoint, read from a PEM bundle file, and check if a private key matches any of the certificates. diff --git a/cmd/root.go b/cmd/root.go index 983fc2c..6641747 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -49,16 +49,16 @@ var ( var rootCmd = &cobra.Command{ Use: "https-wrench", - Short: "HTTPS Wrench, a tool to make HTTPS requests based on a YAML configuration file", + Short: "HTTPS Wrench, a tool to make Yaml defined HTTPS requests and inspect x.509 certificates and keys", Long: ` -HTTPS Wrench is mainly a tool to make HTTPS requests based on a YAML configuration file. +HTTPS Wrench is a tool to make HTTPS requests according to a Yaml configuration file and to inspect x.509 certificates and keys. https-wrench has two subcommands: requests and certinfo. requests is the subcommand that does HTTPS requests according to the configuration provided by the --config flag. -certinfo is a subcommand that reads information from PEM certificates and keys. The certificates +certinfo is a subcommand that reads information from PEM encoded x.509 certificates and keys. The certificates can be read from local files or TLS enabled endpoints. certinfo can compare public keys extracted from certificates and private keys to check if they match.