Progetto

Generale

Profilo

Installare e configurare PHPki

PHPki è un buon programma per la gestione via web di una infastruttura di PKI semplificata, adeguato alle esigenze di gestione di una realtà di dimensioni medio-piccole.

La procedura di installazione è purtroppo un po' macchinosa, ma una volta installata l'utilizzo dell'applicazione è tutto sommato immediato. Una volta scaricati i sorgenti li si potranno installare (al solito si è scelto /usr/local/share/) con i seguenti comandi:

cd /usr/local/share/
tar -xvzf ~/phpki-0.80.tar.gz
mv phpki-0.80 phpki

In questa installazione iniziale la directory phpki sarà creata con permessi di scrittura aperti a tutti, per consentire agli script di setup forniti dal pacchetto stesso di scrivere all'interno della stessa la loro configurazione. Dato che questi script sono eseguiti via web per conto di Apache ed il programma non essendo pacchettizzato non sa quale utente utilizzare, la directory deve essere scrivibile da tutti:

root@monk:/usr/local/share# ls -ld phpki/
drwxrwsrwx 8 root users 4096 Nov 15  2005 phpki/

una volta completata la configurazione si dovrà utilizzare lo script secure.sh per correggere i permessi.

Per accedere alla configurazione usando gli script forniti dal programma occorre anzitutto configurare Apache, faremo comparire la nostra CA sotto /phpki, utilizzando la seguente direttiva:

Alias /phpki /usr/local/share/phpki/
<Directory /usr/local/share/phpki>
        DirectoryIndex index.php
        Options Indexes FollowSymLinks
        AllowOverride All
</Directory>

Una volta inserita la precedente configurazione si potrà puntare il browser su http://www.miosito.it/phpki per ottenere la pagina di istruzioni, in alto a destra si potrà cliccare sul collegamento Setup per andare sulla pagina di impostazione che richiede tutte le informazioni necessarie.

In particolare andranno indicate la directory dove mantenere i file della Certification Authority ed il file su cui si memorizzeranno gli utenti con accesso alla console amministrativa (che richiede accesso autenticato di Apache), che nel nostro caso sono rispettivamente /var/local/phpki/phpki-store e /var/local/phpki/phpkipasswd.

In particolare occorrerà assegnare la proprietà della directory citata all'utente con cui gira Apache, in modo che i file della CA possano essere opportunamente creati al suo interno. Allo stesso modo andrà creato il file di accesso per l'utente amministrativo. Tutto questo va fatto prima di confermare l'esecuzione dello script di setup, altrimenti si avranno degli errori, il tutto si farà con i comandi:

mkdir /var/local/phpki
mkdir /var/local/phpki/phpki-store
chown www-data /var/local/phpki/phpki-store
chmod 700 /var/local/phpki/phpki-store
htpasswd -cm /var/local/phpki/phpkipasswd admin
chown root.www-data /var/local/phpki/phpkipasswd
chmod 640 /var/local/phpki/phpkipasswd

Una volta creata l'infrastruttura per i dati necessari si potrà confermare l'esecuzione della pagina di impostazione, ed eseguire lo script di riordino dei permessi, che chiederà gli ultimi dati necessari:

root@cleis:/usr/local/share/phpki# ./secure.sh 
This application is designed to be an easy to use "certificate factory" 
requiring minimum human intervention to administer.  It is intended for
use within a trusted INTRAnet for the creation and management of x.509
e-mail digital certificates by departmental managers.  IT IS NOT INTENDED
FOR USE OVER THE INTERNET.

This application stores private keys within a sub-directory, making them
potentially susceptible to compromise.  Extra care has been taken in the
design of this application to protect the security of your certificates,
on the condition that you INSTALL IT AS THE ROOT USER.  However, no
software is 100% secure.

Enter the location of your PHPki password (i.e. /etc/phpkipasswd): /var/local/phpki/phpkipasswd

Enter the user ID your web server runs as [apache]: www-data

Enter the group ID your web server runs as [apache]: www-data

Enter the IP or subnet address [192.168.0.0/16] which will be allowed access
to the user admin module in under ./admin: 127.0.0.1
Working...
Done.

Nel caso si utilizzi una distribuzione che usa PHP 5 occorrerà anche modificare il file ca/request_cert.php che usa una parola chiave come valore di un istruzione case, cosa che comporta un errore di sintassi, la cosa si può fare semplicemente con:

sed -e 's/final/finale/g' ca/request_cert.php > request_cert.php.new
mv request_cert.php.new ca/request_cert.php