te
Portions Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
This manual page is derived from documentation obtained from the OpenSC organization (www.opensc-project.org). This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it is useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
pam_pkcs11 7 "14 Oct 2016" "SunOS 5.12" "Standards, Environments, and Macros"
NAME
pam_pkcs11 - PAM Authentication Module for the PKCS#11 token libraries
SYNOPSIS

pam_pkcs11.so [debug] [config_file=filename]
DESCRIPTION

The pam_pkcs11 module implements pam_sm_authenticate(3PAM), which provides functionality to the PAM authentication stack. This module allows a user to login a system, using a X.509 certificate and its dedicated private key stored in a PKCS#11 token. This module currently supports the RSA algorithm only.

To verify the dedicated private key is truly associated with the X.509 certificate, the following verification procedure is performed in this module by default:

Generate 128 random byte data

Sign the random data with the private key and get a signature. This step is done in the PKCS#11 token.

Verify the signature using the public key extracted from the certificate.

For the verification of the users' certificates, locally stored CA certificates as well as either online or locally accessible CRLs are used.

"PAM CONFIGURATION"

The pam_pkcs11.so service module can be used in the <auth> PAM chain. The program that needs a PAM service should be configured in /etc/pam.conf or /etc/pam.d/service. For details on how to configure PAM services, see pam.conf(5).

The following example uses only pam_pkcs11 for authentication:

login auth requisite pam_pkcs11.so.1
login autho required pam_unix_cred.so.1

The following example uses pam_pkcs11 for authentication with fallback to standard UNIX authentication:

login auth sufficient pam_pkcs11.so.1
login auth requisite pam_authtok_get.so.1
login auth required pam_dhkeys.so.1
login auth required pam_unix_cred.so.1
login auth required pam_unix_auth.so.1
"PAM_PKCS11 CONFIGURATION"

To configure the pam_pkcs11 module, you must have the following information:

Which PKCS #11 token you are going to use

Which mapper(s) you need, and if needed, how to create and edit the related mapping files

The root Certificate Authority files, and if required, the Certificate Revocation Lists files

The list of authorized users to login, and their corresponding certificates

To configure the pam_pkcs11 module, you need to modify the pam_pkcs11.conf configuration file which is in the /etc/security/pam_pkcs11 directory by default. For detailed information on how to configure the pam_pkcs11 module, see the PAM-PKCS11 User Manual, available at the http://www.opensc-project.org/ web site, under the PAM PKCS#11 link.

The following example illustrates how to configure the pam_pkcs11 module for a user whose certificate and private key are stored in the Solaris pkcs11_softtoken keystore. This example uses the default certificate verification policy.

Set up the PKCS#11 module. On Solaris, the PKCS#11 module should be set to /usr/lib/$ISA/libpkcs11.so.1, the PKCS#11 Cryptographic Framework library.

Set up the slot_description entry. Specifies the slot to be used. For example, slot_description = "Sun Crypto Softtoken". The default value for this entry is none which means to use the first slot with an available token. An administrator can use the cryptoadm list -vcommand to find all the available slots and their slot descriptions. For more information, see libpkcs11(3LIB) and cryptoadm(8).

Install or create user certificates and its dedicated private keys in the specific PKCS#11 token.

Set up the certificate verification policy (cert_policy). If needed, set up CA certificate and CRL files. The certificate verification policy includes:

none

Perform no verification

ca

Perform CA check

signature

Perform a signature check to ensure that private and public key matches

crl_xxx

Perform various certificate revocation checking

As this example uses the default policy, cert_policy = ca,signature, an administer needs to set up the CA certificates.

Copy the CA certificate to the /etc/security/pam_pkcs11/cacerts directory. A certificate that is self-signed is its own CA certificate. Therefore, in this example, the certificate is placed both in the Softtoken keystore and in the CA certificate directory.

Make hash links for CA certificates

$ /etc/security/pam_pkcs11/pkcs11_make_hash_link \e
 /etc/security/pam_pkcs11/cacerts

Set up the mappers and mapfiles. When a X509 certificate is provided, there are no direct ways to map a certificate to a login. The pam_pkcs11 module provides a configurable way with mappers to specify cert-to-user mapping. Many mappers are provided by the pam_pkcs11 module, for example, the common name (CN) mapper, the digest mapper, the Email mapper, or the LDAP mapper. A user can configure a mapper list in the pam_pkcs11.conf file. The mappers in the list are used sequentially until the certificate is successfully matched with the user. The default mapper list is as follows:

use_mappers = digest, cn, pwent, uid, mail, subject, null;
Some mappers do not require the specification of a mapfile, for example, the common name mapper. Other mappers require mapfiles, for example, the digest mapper. Some sample mapping files can be found in the /etc/security/pam_pkcs11 directory.

All the modules (PKCS#11 module and mapper modules) specified in the /etc/security/pam_pkcs11/pam_pkcs11.conf configuration file need to be delivered in both 32-bit and 64-bit forms. The $ISA (instruction set architecture) token in all the module paths is replaced by an implementation-defined directory name which defines the path relative to the calling program's instruction set architecture. The $ISA token should be used in all the module paths. This allows the pam_pkcs11 module to support both 32 and 64 bit applications concurrently on the system. For example, for the "module = /usr/lib/$ISA/libpkcs11.so" option, at run time, /usr/lib/64/libpkcs11.so will be loaded for 64-bit applications and /usr/lib/32/libpkcs11.so for 32-bit applications.

OPTIONS

The following options are supported:

config_file=filename

Specify the configuration file. The default value is /etc/security/pam_pkcs11/pam_pkcs11.conf.

debug

Enable debugging output.

FILES

/usr/lib/security/pam_pkcs11.so

pam_pkcs11 module

/usr/lib/pam_pkcs11/$ISA/ldap_mapper.so

Mapper module.

/usr/lib/pam_pkcs11/$ISA/opensc_mapper.so

Mapper module.

/usr/lib/pam_pkcs11/$ISA/openssh_mapper.so

Mapper module.

/etc/security/pam_pkcs11/pam_pkcs11.conf

Configuration file.

/etc/security/pam_pkcs11/cacerts

Configuration directory. Stores the CA certificates.

/etc/security/pam_pkcs11/crls

Configuration directory. Stores the CRL files.

/etc/security/pam_pkcs11/digest_mapping.example

Sample mapfile.

/etc/security/pam_pkcs11/subject_mapping.example

Sample mapfile.

/etc/security/pam_pkcs11/mail_mapping.example

Sample mapfile.

/etc/security/pam_pkcs11/make_hash_link.sh

Sample script.

AUTHORS

PAM-pkcs11 was originally written by MarioStrasser , mast@gmx.net.

Newer versions are from Juan Antonio Martinez, jonsito@teleline.es

ATTRIBUTES

See attributes(7) for a description of the following attributes:

ATTRIBUTE TYPEATTRIBUTE VALUE
Availability
library/security/pam/module/pam-pkcs11, SUNWpampkcs11r, SUNWpampkcs11-docs
Interface StabilityUncommitted
SEE ALSO

card_eventmgr(1), pkcs11_inspect(1), pklogin_finder(1), cryptoadm(8), libpkcs11(3LIB)libpkcs11(3LIB)pam_sm_authenticate(3PAM), pam.conf(5), attributes(7), pkcs11_softtoken(7)

PAM-PKCS11 User Manual, available at /usr/share/doc/pam_pkcs11/pam_pkcs11.html.