| handlers | ||
| src | ||
| templates | ||
| .gitignore | ||
| active.de-DE.toml | ||
| active.en-US.toml | ||
| active.en.toml | ||
| ca.cnf | ||
| COPYING | ||
| go.mod | ||
| go.sum | ||
| gulpfile.js | ||
| main.go | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| setup_example_ca.sh | ||
Browser PKCS#10 CSR generation PoC
This repository contains a small proof of concept implementation of browser based PKCS#10 certificate signing request and PKCS#12 key store generation using node-forge.
The backend is implemented in Go and utilizes openssl for the signing operations.
Running
- 
Clone the repository git clone https://git.dittberner.info/jan/browser_csr_generation.git
- 
Get dependencies and build assets cd browser_csr_generation npm install --global gulp-cli npm install gulp
- 
Setup the example CA and a server certificate and key ./setup_example_ca.sh openssl req -new -x509 -days 365 -subj "/CN=localhost" -addext subjectAltName=DNS:localhost -newkey rsa:3072 \ -nodes -out server.crt.pem -keyout server.key.pem
- 
Run the Go based backend go run main.goOpen https://localhost:8000/ in your browser. 
- 
Run gulp watch You can run a gulp watch in a second terminal window to automatically publish changes to the files in the srcdirectory:gulp watch
Translations
This PoC uses go-i18n for internationalization (i18n) support.
The translation workflow needs the go18n binary which can be installed via
go get -u  github.com/nicksnyder/go-i18n/v2/goi18n
To extract new messages from the code run
goi18n extract
Then use
goi18n merge active.*.toml
to create TOML files for translation as translate.<locale>.toml. After translating the messages run
goi18n merge active.*.toml translate.*.toml
to merge the messages back into the active translation files. To add a new language you need to add the language code
to main.go's i18n bundle loading code
for _, lang := range []string{"en-US", "de-DE"} {
    if _, err := bundle.LoadMessageFile(fmt.Sprintf("active.%s.toml", lang)); err != nil {
        log.Panic(err)
    }
}