{"id":18625627,"url":"https://github.com/varugasu/two-way-ssl","last_synced_at":"2025-10-12T11:48:38.598Z","repository":{"id":41240506,"uuid":"190093461","full_name":"varugasu/Two-Way-SSL","owner":"varugasu","description":"Private CA and Two Way SSL (Client Certificate)","archived":false,"fork":false,"pushed_at":"2024-10-25T19:46:35.000Z","size":13,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-12T11:48:37.838Z","etag":null,"topics":["certificate-authority","nginx","nginx-configuration","python","ssl","ssl-certificates","two-way-ssl-authentication"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varugasu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-03T22:54:57.000Z","updated_at":"2019-06-03T22:57:35.000Z","dependencies_parsed_at":"2022-09-05T07:10:51.552Z","dependency_job_id":"be2c0da3-0669-4f9e-86d4-5a9a19d0adbf","html_url":"https://github.com/varugasu/Two-Way-SSL","commit_stats":null,"previous_names":["varugasu/two-way-ssl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/varugasu/Two-Way-SSL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varugasu%2FTwo-Way-SSL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varugasu%2FTwo-Way-SSL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varugasu%2FTwo-Way-SSL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varugasu%2FTwo-Way-SSL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varugasu","download_url":"https://codeload.github.com/varugasu/Two-Way-SSL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varugasu%2FTwo-Way-SSL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011184,"owners_count":26084900,"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","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-authority","nginx","nginx-configuration","python","ssl","ssl-certificates","two-way-ssl-authentication"],"created_at":"2024-11-07T04:35:26.670Z","updated_at":"2025-10-12T11:48:38.569Z","avatar_url":"https://github.com/varugasu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Two Way SSL\n\n## Requirements:\n\n- Docker\n- OpenSSL\n\n## CA Self signed certificate:\n\n```\nopenssl genrsa -out ca/ca.key 2048\nopenssl req -new -x509 -key ca/ca.key -out ca/ca.crt -subj \"/C=BR/ST=SP/L=SP/O=CA Example/OU=IT Department/CN=example.com\"\ncp ca/ca.crt nginx/certs/\n```\n\n## Server:\n\n```\nopenssl req -new -out server.csr -config nginx/server.conf\nopenssl x509 -req -in server.csr -CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial -out server.crt\ncp server.csr server.key server.crt nginx/certs/\ncp server.csr server.key server.crt api/server/certs/\nrm server.*\n```\n\n## Client:\n\n```\nopenssl req -new -out client.csr -config client/client.conf\nopenssl x509 -req -in client.csr -CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial -out client.crt\nmv client.* client/\n```\n\n## Initialize:\n\n```\ndocker-compose up --build\n```\n\n## Verify:\n\n--cacert is needed to skip curl's verification\n\n```\ncurl https://server.example.br --cacert ca/ca.crt\n```\n\nReturns:\n\n```html\n\u003chtml\u003e\n  \u003chead\u003e\n    \u003ctitle\u003e400 No required SSL certificate was sent\u003c/title\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003ccenter\u003e\u003ch1\u003e400 Bad Request\u003c/h1\u003e\u003c/center\u003e\n    \u003ccenter\u003eNo required SSL certificate was sent\u003c/center\u003e\n    \u003chr /\u003e\n    \u003ccenter\u003enginx\u003c/center\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\nAdding client's certificate:\n\n```\ncurl https://server.example.br --cacert ca/ca.crt --key client/client.key --cert client/client.crt\n```\n\nOutput:\n\n```\nHello, World\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarugasu%2Ftwo-way-ssl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarugasu%2Ftwo-way-ssl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarugasu%2Ftwo-way-ssl/lists"}