arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
82 lines (49 loc) • 3.5 kB
Markdown
**Network Security Services (NSS)** is a set of libraries designed to support cross-platform development of security-enabled client and server applications.
Applications built with NSS can support [SSL](https://en.wikipedia.org/wiki/SSL "wikipedia:SSL") v2 and v3, [TLS](https://en.wikipedia.org/wiki/TLS "wikipedia:TLS"), [PKCS](https://en.wikipedia.org/wiki/PKCS "wikipedia:PKCS") #5, #7, [PKCS #11](https://en.wikipedia.org/wiki/PKCS_11 "wikipedia:PKCS 11"), [PKCS #12](https://en.wikipedia.org/wiki/PKCS_12 "wikipedia:PKCS 12"), [S/MIME](https://en.wikipedia.org/wiki/S/MIME "wikipedia:S/MIME"), [X.509](https://en.wikipedia.org/wiki/X.509 "wikipedia:X.509") v3 certificates, and other security standards.
## Contents
* [1 Installation](#Installation)
* [2 Certificate management](#Certificate_management)
* [2.1 List certificate DB](#List_certificate_DB)
* [2.2 Import certificate](#Import_certificate)
* [2.3 Edit certificate](#Edit_certificate)
* [2.4 Delete certificate](#Delete_certificate)
* [3 See also](#See_also)
## Installation
[Install](/index.php/Install "Install") [nss](https://www.archlinux.org/packages/?name=nss), available in the [official repositories](/index.php/Official_repositories "Official repositories").
## Certificate management
Use *certutil* utility provided with NSS to manage your certificates.
### List certificate DB
To get list of all certificates:
```
$ certutil -d sql:$HOME/.pki/nssdb -L
```
To get details about certificate:
```
$ certutil -d sql:$HOME/.pki/nssdb -L -n *certificate_nickname*
```
### Import certificate
To add a certificate specify the `-A` option:
```
$ certutil -d sql:$HOME/.pki/nssdb -A -t "*TRUSTARGS*" -n *certificate_nickname* -i */path/to/cert/filename*
```
The `TRUSTARGS` are three strings of zero or more alphabetic characters, separated by commas, for example: `"TCu,Cu,Tuw"`. They define how the certificate should be trusted for SSL, email, and object signing, and are explained in the [certutil docs](http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html#1034193) or [Meena's blog post](https://blogs.oracle.com/meena/entry/notes_about_trust_flags) on trust flags.
To add a personal certificate and private key for SSL client authentication use the command:
```
$ pk12util -d sql:$HOME/.pki/nssdb -i */path/to/PKCS12/cert/filename.p12*
```
This will import a personal certificate and private key stored in a PKCS #12 file. The `TRUSTARGS` of the personal certificate will be set to `"u,u,u"`.
### Edit certificate
Call *certutil* with `-M` option to edit the certificate. For example, to edit the `TRUSTARGS`:
```
$ certutil -d sql:$HOME/.pki/nssdb -M -t "*TRUSTARGS*" -n *certificate_nickname*
```
### Delete certificate
Use `-D` option to remove the certificate:
```
$ certutil -d sql:$HOME/.pki/nssdb -D -n *certificate_nickname*
```
## See also
* [Network Security Services - Mozilla](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS)
* [Using the Certificate Database Tool - Mozilla](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil#Using_the_Certificate_Database_Tool)
* [Linux Cert Management - Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/linux_cert_management.md)
* [Managing Certificate Trust flags in NSS Database - Meena Vyas, Oracle](https://blogs.oracle.com/meena/about-trust-flags-of-certificates-in-nss-database-that-can-be-modified-by-certutil)