<commit_before># FreeCA

FreeCA is a simple wrapper around OpenSSL to make generating signed certificates, with a self-signed CA, less of a headache.

OpenSSL in incredibly time-consuming to use effectively for what I felt was a reasonably simply use case.
All I was trying to do is create a CA that I could use to sign SAN/UCC/Wildcard certificates. This turned out
not to be an easy task - I found that very few online tutorials make it absolutely clear how to sign such certificate without having to modify your global `openssl.cnf`.

## How to use it FreeCA

1. Modify the `req_distinguished_name` of [`openssl.cnf`](#) to your liking.
2. Create your own CA:

        $ ./generate_ca 
        Generating RSA private key, 4096 bit long modulus
        ...................................................++
        ......................................++
        e is 65537 (0x10001)

        Your CA is now ready to use (certificate: keypairs/ca/ca.crt, private key: keypairs/ca/ca.key)

   You should now proceed to install this certificate wherever you like (e.g. Firefox, Google Chrome). When prompted, trust it to identify websites.

3. Issue certificates that support SAN/UCC/Wildcard names:

        $ ./generate_certificate web-server "*.example.com" "*.example.net"
        Generating RSA private key, 4096 bit long modulus
        ...............................++<commit_msg>Update links and add the clone step.<commit_after># FreeCA

FreeCA is a simple wrapper around OpenSSL to make generating signed certificates, with a self-signed CA, less of a headache.

OpenSSL in incredibly time-consuming to use effectively for what I felt was a reasonably simply use case.
All I was trying to do is create a CA that I could use to sign SAN/UCC/Wildcard certificates. This turned out
not to be an easy task - I found that very few online tutorials make it absolutely clear how to sign such certificate without having to modify your global `openssl.cnf`.

## How to use it FreeCA

0. Clone this repository via whichever method you prefer.
1. Modify the `req_distinguished_name` of [`openssl.cnf`](https://github.com/jaysh/free-ca/blob/master/openssl.cnf) to your liking.
2. Create your own CA:

        $ ./generate_ca 
        Generating RSA private key, 4096 bit long modulus
        ...................................................++
        ......................................++
        e is 65537 (0x10001)

        Your CA is now ready to use (certificate: keypairs/ca/ca.crt, private key: keypairs/ca/ca.key)

   You should now proceed to install this certificate wherever you like (e.g. Firefox, Google Chrome). When prompted, trust it to identify websites.

3. Issue certificates that support SAN/UCC/Wildcard names:

        $ ./generate_certificate web-server "*.example.com" "*.example.net"
        Generating RSA private key, 4096 bit long modulus
        ...............................++
{'fraction_non_alphanumeric': 0.14447494852436513, 'fraction_numerical': 0.015442690459849005, 'mean_word_length': 2.346727898966705, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2290393', 'n_tokens_mistral': 800, 'n_tokens_neox': 719, 'n_words': 363}