|
7 months ago | |
---|---|---|
cmd/goose | 7 months ago | |
handlers | 10 months ago | |
migrations | 10 months ago | |
src | 3 years ago | |
templates | 3 years ago | |
.gitignore | 3 years ago | |
COPYING | 3 years ago | |
README.md | 7 months ago | |
active.de-DE.toml | 3 years ago | |
active.en-US.toml | 3 years ago | |
active.en.toml | 3 years ago | |
ca.cnf | 10 months ago | |
go.mod | 7 months ago | |
go.sum | 10 months ago | |
gulpfile.js | 7 months ago | |
main.go | 7 months ago | |
package-lock.json | 7 months ago | |
package.json | 7 months ago | |
setup_example_ca.sh | 10 months ago |
README.md
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. The instructions below have been tested on Debian 11 (Bullseye). Debian 10 works when you use a manual installation of Go.
Running
-
Install dependencies
sudo apt install git npm openssl golang-go
-
Clone the repository
git clone https://code.cacert.org/jandd/poc-browser-csr-generation.git
-
Get dependencies and build assets
cd poc-browser-csr-generation npm install --no-save --user gulp-cli npm install npm run build
-
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.go
Open 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
src
directory:npm run 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)
}
}