You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jan Dittberner 2ad9cbaabe Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8'
git-subtree-dir: clientcert
git-subtree-mainline: 4c398fcdb9
git-subtree-split: 3cbf4b5b01
4 months ago
..
src Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago
.gitignore Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago
COPYING Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago
README.md Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago
gulpfile.js Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago
package-lock.json Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago
package.json Add 'clientcert/' from commit '3cbf4b5b01c7b5a5f54a1d67e208b1245cb07ec8' 4 months ago

README.md

Browser based client certificate creation

This repository contains an implementation to create a client certificate key store in a modern Web browser.

The implementation uses the excellent node-forge library.

Bootstrap 5 is used for styling the user interface.

This is meant as a replacement for the <keygen> tag that has been removed from browsers.

The following steps have been implemented:

  • choose a common name for the subject of the certificate signing request
  • generate an RSA key pair with a selectable size
  • generate a certificate signing request (PKCS#10 CSR)
  • paste the certificate signed by the certificate authority
  • build a PKCS#12 (also known as .p12 or .pfx) key store file with a password chosen by the user. That file contains the generated key pair, the client certificate, and the CA certificate chain

The implementation contains the CAcert CA certificates for CA chain building.

Running

  1. Install dependencies

    sudo apt install git npm
    
  2. Clone the repository

    git clone https://code.cacert.org/cacert/browser-csr-generation.git
    
  3. Get dependencies and build assets

    cd browser-csr-generation
    npm install --no-save --user gulp-cli
    npm install
    npm run build
    
  4. Open public/index.html in a Web browser

  5. Run

    npm run watch
    

    to continuously update the public/index.html when changing src/index.html