{"id":17120496,"url":"https://github.com/yakuter/gossl","last_synced_at":"2025-03-17T11:30:24.048Z","repository":{"id":39449918,"uuid":"478749491","full_name":"yakuter/gossl","owner":"yakuter","description":"Cross platform, easy to use SSL/TLS toolset","archived":false,"fork":false,"pushed_at":"2022-04-19T07:16:25.000Z","size":149,"stargazers_count":188,"open_issues_count":1,"forks_count":13,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-02-27T22:34:33.976Z","etag":null,"topics":["certificate","go","golang","ssh-copy-id","ssh-keygen","ssl","ssl-certificates","tls","tls-certificate"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yakuter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"patreon":"yakuter"}},"created_at":"2022-04-06T22:42:00.000Z","updated_at":"2024-08-13T18:17:00.000Z","dependencies_parsed_at":"2022-08-27T19:40:47.379Z","dependency_job_id":null,"html_url":"https://github.com/yakuter/gossl","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakuter%2Fgossl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakuter%2Fgossl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakuter%2Fgossl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yakuter%2Fgossl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yakuter","download_url":"https://codeload.github.com/yakuter/gossl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858016,"owners_count":20359261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["certificate","go","golang","ssh-copy-id","ssh-keygen","ssl","ssl-certificates","tls","tls-certificate"],"created_at":"2024-10-14T18:00:00.729Z","updated_at":"2025-03-17T11:30:23.479Z","avatar_url":"https://github.com/yakuter.png","language":"Go","funding_links":["https://patreon.com/yakuter"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://www.yakuter.com/wp-content/yuklemeler/Goossl.png\" width=\"300\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/github/workflow/status/yakuter/gossl/Test/main\" alt=\"Build Status\"\u003e\n\u003cimg src=\"https://img.shields.io/github/downloads/yakuter/gossl/total\" alt=\"Total Downloads\"\u003e\n\u003cimg src=\"https://img.shields.io/codecov/c/github/yakuter/gossl/main\" alt=\"Codecov branch\"\u003e\n\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/yakuter/gossl\" alt=\"Go Version\"\u003e\n\u003ca href=\"https://pkg.go.dev/github.com/yakuter/gossl\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/yakuter/gossl.svg\" alt=\"Go Version\"\u003e\u003c/a\u003e\u003cbr\u003e\n\u003cem\u003eGopher design by \u003ca href=\"https://twitter.com/tgybalci\"\u003eTugay BALCI\u003c/a\u003e\u003c/em\u003e\n\u003c/p\u003e\n\n# GoSSL\nGoSSL is a cross platform, easy to use SSL/TLS toolset written with Go and built with ❤️\n\n## Features\n- Generate RSA private and public key - key command\n- Generate x509 RSA Certificate Request (CSR) - cert command\n- Generate x509 RSA Root CA - cert command\n- Generate x509 RSA Certificate - cert command\n- Get information about an x509 RSA Certificate - info command\n- Verify a Certificate with a Root CA - verify command\n- Verify a URL with a Root CA - verify command\n- Generate SSH key pair - ssh command\n- Copy SSH public key to remote SSH server - ssh-copy command\n\n## Install\nExecutable binaries can be downloaded at [Releases](https://github.com/yakuter/gossl/releases) page according to user's operating system and architecture. After download, extract compressed files and start using GoSSL via terminal.\n\n### MacOS Homebrew Install\nMacOS users can install GoSSL via Homebrew with the commands below.\n```bash\nbrew tap yakuter/homebrew-tap\nbrew install gossl\n```\n\n## Commands\n### version\n`version` command displays the current version of GoSSL\n```bash\ngossl -v\ngossl --version\n```\n\n### help\n`help` command displays default help and existing commands. It can also be used to get sub command helps.\n```bash\ngossl help\ngossl help cert\n...\n```\n\n### key\n`key` command generates RSA private key with provided bit size.\n\n```bash\ngossl key --help\ngossl key --bits 2048\ngossl key --bits 2048 --out private.key\ngossl key --bits 2048 --out private.key --withpub\n```\n\n### info\n`info` displays information about x509 certificate. Thanks [grantae](https://github.com/grantae) for great [certinfo](https://github.com/grantae/certinfo) tool which is used here.\nA file path or a valid URL is used to get details of the certificate.\n\n```bash\ngossl info cert.pem\ngossl info --url google.com\n```\n\n### cert\n`cert` command generates x509 SSL/TLS Certificate Request (CSR), Root CA and Certificate with provided private key.\n\nHelp\n```bash\ngossl cert --help\n```\nGenerate Certificate Request (CSR)\n```bash\ngossl cert \\\n    --key private.key \\\n    --out cert.csr \\\n    --days 365 \\\n    --serial 12345 \\\n    --isCSR\n```\nGenerate Root CA\n```bash\ngossl cert \\\n    --key private.key \\\n    --out ca.pem \\\n    --days 365 \\\n    --serial 12345 \\\n    --isCA \n```\nGenerate Certificate\n```bash\ngossl cert \\\n    --key private.key \\\n    --out cert.pem \\\n    --days 365 \\\n    --serial 12345\n```\n\n### verify\n`verify` command verifies x509 certificate with provided root CA in PEM format.\n\n```bash\ngossl verify --help\n\n// Verify certificate with root CA \ngossl verify --cafile ./testdata/ca-cert.pem --certfile ./testdata/server-cert.pem\ngossl verify --cafile ./testdata/ca-cert.pem --certfile ./testdata/server-cert.pem --dns 127.0.0.1\n\n// Verify URL with root CA\ngossl verify --cafile testdata/ca-cert.pem --url https://127.0.0.1\n```\n\n### ssh\n`ssh` command generates SSH key pair with provided bit size just like `ssh-keygen` tool. These key pairs are used for automating logins, single sign-on, and for authenticating hosts.\n\n```bash\ngossl key --help\ngossl key --bits 2048\ngossl key --bits 2048 --out ./id_rsa\n// output will be written to ./id_rsa and ./id_rsa_pub files\n```\n\n### ssh-copy\n`ssh-copy` connects remote SSH server, creates `/home/user/.ssh` directory and `authorized_keys` file in it and appends provided public key (eg, id_rsa.pub) to `authorized_keys` file just like `ssh-copy-id` tool.\n\n```bash\ngossl ssh-copy --help\n\n// This command will use default SSH public key path as \"USER_HOME_DIR/.ssh/id_rsa.pub\"\ngossl ssh-copy remoteUser@remoteIP\n\n// This command will ask for password to connect SSH server\ngossl ssh-copy --pubkey /home/user/.ssh/id_rsa.pub remoteUser@remoteIP\n\ngossl ssh-copy --pubkey /home/user/.ssh/id_rsa.pub --password passw@rd123 remoteUser@remoteIP\n\n```\n\n### TODO\n1. Add generate command for generating private key, root ca and x509 certificates in one command\n2. Add cert template format read from yaml file\n3. Add certificate converter command like DER to PEM etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakuter%2Fgossl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyakuter%2Fgossl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakuter%2Fgossl/lists"}