All Projects → texadactyl → diyca

texadactyl / diyca

Licence: GPL-3.0 license
Do-It-Yourself Certificate Authority

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
HTML
75241 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to diyca

labca
A private Certificate Authority for internal (lab) use, based on the open source ACME Automated Certificate Management Environment implementation from Let's Encrypt (tm).
Stars: ✭ 126 (+600%)
Mutual labels:  tls, pki, certificate-authority
Certificates
🛡️ A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management, so you can use TLS everywhere & SSO for SSH.
Stars: ✭ 3,693 (+20416.67%)
Mutual labels:  tls, pki, certificate-authority
Pki
The Dogtag Certificate System is an enterprise-class Certificate Authority (CA) which supports all aspects of certificate lifecycle management, including key archival, OCSP and smartcard management.
Stars: ✭ 97 (+438.89%)
Mutual labels:  ssl, pki, certificate-authority
Certstrap
Tools to bootstrap CAs, certificate requests, and signed certificates.
Stars: ✭ 1,689 (+9283.33%)
Mutual labels:  tls, ssl, certificate-authority
Aspnetcorecertificates
Certificate Manager in .NET Core for creating and using X509 certificates
Stars: ✭ 135 (+650%)
Mutual labels:  tls, ssl, pki
pki
Certificate Authority management suite
Stars: ✭ 23 (+27.78%)
Mutual labels:  ssl, pki, certificate-authority
Boulder
An ACME-based certificate authority, written in Go.
Stars: ✭ 4,091 (+22627.78%)
Mutual labels:  tls, pki, certificate-authority
Mutual Tls Ssl
🔐 Tutorial of setting up Security for your API with one way authentication with TLS/SSL and mutual mutual authentication for a java based web server and a client with both Spring Boot. Different clients are provided such as Apache HttpClient, OkHttp, Spring RestTemplate, Spring WebFlux WebClient Jetty and Netty, the old and the new JDK HttpClient, the old and the new Jersey Client, Google HttpClient, Unirest, Retrofit, Feign, Methanol, vertx, Scala client Finagle, Featherbed, Dispatch Reboot, AsyncHttpClient, Sttp, Akka, Requests Scala, Http4s Blaze, Kotlin client Fuel, http4k, Kohttp and ktor. Also other server examples are available such as jersey with grizzly. Also gRPC examples are included
Stars: ✭ 163 (+805.56%)
Mutual labels:  tls, ssl, certificate-authority
openssl-ca
Shell scripts to manage a private Certificate Authority using OpenSSL
Stars: ✭ 38 (+111.11%)
Mutual labels:  tls, ssl, certificate-authority
TLS-Redirection
TLS Redirection
Stars: ✭ 109 (+505.56%)
Mutual labels:  tls, ssl
cero
Scrape domain names from SSL certificates of arbitrary hosts
Stars: ✭ 316 (+1655.56%)
Mutual labels:  tls, ssl
sack.vfs
Node addon which adds a virtual file system interface; websockets; json(6) parsing; sql support(sqlite,odbc); javascript sched_yield; ssl certificate generation; more...
Stars: ✭ 29 (+61.11%)
Mutual labels:  tls, ssl
ssl-cert-check
Check expiry dates of local and remote SSL certificates
Stars: ✭ 28 (+55.56%)
Mutual labels:  tls, ssl
sslcontext-kickstart
🔐 A lightweight high level library for configuring a http client or server based on SSLContext or other properties such as TrustManager, KeyManager or Trusted Certificates to communicate over SSL TLS for one way authentication or two way authentication provided by the SSLFactory. Support for Java, Scala and Kotlin based clients with examples. Av…
Stars: ✭ 295 (+1538.89%)
Mutual labels:  tls, ssl
BabaSSL
A Brisk and Better Assured Cryptographic Toolkit
Stars: ✭ 361 (+1905.56%)
Mutual labels:  tls, pki
TestAuthority
Simple certificate authority for development written in C#. Allows issue of SSL certificates, including wildcard certificates
Stars: ✭ 32 (+77.78%)
Mutual labels:  ssl, certificate-authority
GCXTrustPolicy
SSL pinning and trust validation framework for iOS
Stars: ✭ 21 (+16.67%)
Mutual labels:  tls, ssl
docker-nginx-certbot
Automatically create and renew website certificates for free using the Let's Encrypt certificate authority.
Stars: ✭ 367 (+1938.89%)
Mutual labels:  ssl, certificate-authority
tlstools
🔐 CLI tool to analyze, troubleshoot or inspect SSL certificates, requests or keys.
Stars: ✭ 45 (+150%)
Mutual labels:  tls, ssl
openssl ca
openssl_ca with QT GUI
Stars: ✭ 16 (-11.11%)
Mutual labels:  pki, certificate-authority

Overview

*** Python 3 only ***

(Python 2 is deprecated in 2020)

*** It is very important to follow docs/preparation_notes.txt precisely. ***

This git project constitutes a Do-It-Yourself Certificate Authority (diyca), suitable for unit testing (developer testing) just prior to entering integration system testing with a wider audience: more developers, end-users, and/or auditors. A web server approach is used in obtaining an X.509 certificate signed by this unit testing CA, based on a Certificate Signing Request (CSR) provided by the user, employing a web browser (Firefox, Safari, etc.).

The inspiration of this project is the myriad of Internet of Things (IoT) projects that might be falling into one of the following categories of undesirable patterns:

  • No data security at all: (1) no authentication of the endpoints, (2) no message integrity checking, and (3) data is transmitted over the network in cleartext.
  • Partners are using weak cryptography (E.g. RC4 or Single-DES) and there is no secure methodology of installing or managing the secret keys. E.g. coding the secret keys as program constants.
  • Partners are using strong secret key cryptography but there is no secure methodology of installing or managing the secret keys. E.g. The secret keys are never changed.

Even when developers agree to securely use public key infrastructure and strong cryptography, I have seen cases where they stub this aspect out of their project during unit testing. This just puts off the inevitable and may cause project delays when the stubs are later replaced with operational code. Better to design and develop a project from the very beginning as it is intended to be in production.

Therefore, the primary goal of this project is to allow developers to unit test programs which make use of X.509 certificate based authentication and cryptography. Thus, when it is time to migrate to more stringent testing environments (E.g. integrated system testing and user acceptance testing), the only thing new will be the target environment details since the developers will have gained experience with a Certificate Authority operations, X.509 certificates, and managing the user's private key.

This project is already proven running the web server on an Intel/AMD environment (Biostar Celeron board) and a Raspberry Pi 2 & 3 (ARM 32-bit processor with 1GB RAM).

Licensing

This is NOT commercial software; instead, usage is covered by the GNU General Public License version 3 (2007). In a nutshell, please feel free to use the project and share it as you will but please don't sell it. Thanks!

See the LICENSE file for the GNU licensing information.

Getting Started

Subfolders:

  • app_web - Python 3 source code for the web server running in a Flask infrastructure (see docs/preparation_notes.txt for references to all of the supporting software as well as how to install, test, etc.)
  • bin - Bash scripts for setting up diyca and other tools
  • calvin - Self-signed Certificate Authority
  • certs - Calvin's certificate and the web server's certificate
  • docs - project documentation (admittedly, skimpy at the moment)
  • example.users - example SSL programs that use certificates signed by Calvin, "alice" and "bob"
  • log - Holds all of the log files which cutoff at midnight; aged to keep a maximum of 10 files
  • signer - uploaded CSRs (temporarily) and downloaded CRTs (accumulating, for the moment)

The starting point with this project is the docs/preparation_notes.txt file. Follow the instructions therein precisely with possible exceptions related to Raspbian set up changes or bugs that you found (please open an issue).

External Package Dependencies

dnspython
flask
pyOpenSSL
werkzeug

Feel free to open an issue for bugs and enhancement requests. I'll respond as soon as I can.

Richard Elkins

Dallas, Texas, USA, 3rd Rock, Sol, ...

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].