Za pomocą własnego repozytorium pakietów należy zainstalować oprogramowanie OpenXPKI:
pkg install -Uy security/p5-openxpki
Ustawienia zależności
Należy pamiętać, aby dla pakietu devel/p5-Log-Dispatch nie wybrać opcji APACHE: w przeciwnym przypadku będzie instalowany apache24 - zupełnie zbędne przy korzystaniu z nginx-a.
Przed pierwszym uruchomieniem
Zgodnie z wiadomością z pakietu instalacyjnego przy pierwszej instalacji (nie upgrade) należy wykonać następujące polecenia:
install -m 660 -o openxpki -g openxpki /dev/null /var/log/openxpki/openxpki.log
install -m 660 -o www -g www /dev/null /var/log/openxpki/webui.log
install -m 660 -o www -g www /dev/null /var/log/openxpki/scep.log
install -m 660 -o www -g www /dev/null /var/log/openxpki/soap.log
Nie można zapominać o właściwych uprawnieniach dla użytkownika www:
setfacl -m u:www:rwx::allow /var/log/openxpki/ /var/log/openxpki/webui.log
Konfiguracja bazy danych
OpenXPKI [ 1 ] opiera się o bazę danych. Preferowana to mySQL [ dok. 2 ] , ale na liście schematów do instalacji jest również PostgreSQL [ dok. 1 ] korzystać z bazy, należy doinstalować odpowiedni pakiet1:
# w przypadku bazy danych PostgreSQL
pkg install -Uy databases/p5-DBD-Pg
# w przypadku bazy danych mySQL
pkg install -Uy databases/p5-DBD-mysql
# w przypadku SQLite
pkg install -Uy databases/p5-DBD-SQLite
mySQL
Na podstawie dokumentacji dla mysql-a należy utworzyć dedykowaną bazę danych oraz wgrać stosowny schemat umieszczony w katalogu /usr/local/share/examples/openxpki/config/sql/:
CREATE DATABASE openxpkidb;
/* utworzenie użytkownika głównego (backend) */
CREATE USER 'openxpki_user'@'localhost' IDENTIFIED BY 'sekretne_haslo';
GRANT ALL ON openxpkidb.* TO 'openxpki_user'@'localhost';
/* utworzenie użytkownika dla WebUI (frontend) /*
CREATE USER 'openxpki_session'@'localhost' IDENTIFIED BY '__haslo__';
GRANT SELECT, INSERT, UPDATE, DELETE ON openxpkidb.frontend_session TO 'openxpki_session'@'localhost';
FLUSH PRIVILEGES;
oraz wgranie schematu do pustej bazy danych:
cat /usr/local/share/examples/openxpki/config/sql/schema-mysql.sql | mysql -u openxpki_user -p openxpkidb
PostgreSQL
Na podstawie dokumentacji dla postgres-a należy utworzyć dedykowaną bazę danych oraz wgrać stosowny schemat umieszczony w katalogu /usr/local/share/examples/openxpki/config/sql/:
createuser -U pgsql -DERSP xpki_user
createdb -U pgsql -E UTF8 -O xpki_user openxpkidb
cat /usr/local/share/examples/openxpki/config/sql/schema-psql.sql | psql -U xpki_user openxpkidb
Instalacja plików konfiguracyjnych
Należy zainstalować pliki konfiguracyjne dla demona openxpkid oraz dla webui:
cp -pr /usr/local/share/examples/openxpki/config/openxpki/config.d /usr/local/etc/openxpki/
cp -pr /usr/local/share/examples/openxpki/config/openxpki/webui /usr/local/etc/openxpki/
Poprawienie uprawnień do plików
Pliki konfiguracyjne nie posiadają dobrych uprawnień dla serwera webowego, dlatego też trzeba poprawić uprawnienia:
find /usr/local/etc/openxpki/ -type d -exec chmod o+x {} \;
Wygenerowanie haseł dla użytkowników
Statyczne hasła dla użytkowników (domyślnie raop) są przechoywane w plikach konfiguracyjnych w formie {SSHA}fdsfdsgssgsdgsdg. W celu wygenerowania takiego hasła należy użyć narzędzia:
openxpkiadm hashpwd
Podane hasła należy zapisać, aby potem pamiętać
Niezbędne modyfikacje
Następujące pliki należy zmodyfikować w celu poprawnego działania openxpkid:
system/database.yaml
--- /usr/local/share/examples/openxpki/config/openxpki/config.d/system/database.yaml 2019-11-03 20:12:18.000000000 +0100
+++ /usr/local/etc/openxpki/config.d/system/database.yaml 2019-11-04 15:57:48.777877000 +0100
@@ -1,11 +1,11 @@
main:
debug: 0
type: MySQL
- name: openxpki
+ name: openxpkidb
host: localhost
port: 3306
- user: openxpki
- passwd: openxpki
+ user: openxpki_user
+ passwd: ********************
# extra options passed to the driver as parameter
#driver:
system/server.yaml
--- /usr/local/share/examples/openxpki/config/openxpki/config.d/system/server.yaml 2019-11-03 20:12:18.000000000 +0100
+++ /usr/local/etc/openxpki/config.d/system/server.yaml 2019-11-04 14:49:06.860446000 +0100
@@ -10,7 +10,7 @@ group: openxpki
socket_file: /var/openxpki/openxpki.socket
pid_file: /var/openxpki/openxpkid.pid
stderr: /var/log/openxpki/stderr.log
-tmpdir: /var/tmp
+tmpdir: /var/tmp
# This is experimental!
#type: PreFork
@@ -55,6 +55,6 @@ service:
# settings for i18n
i18n:
- locale_directory: /usr/share/locale
- default_language: C
+ locale_directory: /usr/local/share/locale
+ default_language: pl_PL
webui/default.conf
--- /usr/local/share/examples/openxpki/config/openxpki/webui/default.conf 2019-11-03 20:12:18.000000000 +0100
+++ /usr/local/etc/openxpki/webui/default.conf 2019-11-04 22:46:29.543115000 +0100
@@ -18,7 +18,7 @@ scripturl = /cgi-bin/webui.fcgi
# mapping rules must be given in [realm] section below
#realm_mode = path
-locale_directory: /usr/share/locale
+locale_directory: /usr/local/share/locale
default_language: en_US
[session]
@@ -48,10 +48,10 @@ Directory = /tmp
# otherwise an attacker on the webservice can access your backend tables!
# CREATE USER 'openxpki_session'@'localhost' IDENTIFIED BY 'mysecret';
# GRANT SELECT, INSERT, UPDATE, DELETE ON openxpki.frontend_session TO 'openxpki_session'@'localhost';
-#NameSpace = openxpki
-#DataSource = dbi:mysql:dbname=openxpki
-#User = openxpki_session
-#Password = mysecret
+##NameSpace = openxpkidb
+DataSource = dbi:mysql:dbname=openxpkidb
+User = openxpki_session
+Password = ********************
# Encrypt the session tables
#EncryptKey = SecretSessionKey
# Log client IP in session table
config.d/realm/__REALM__/auth/handler.yaml
Pokazana zmiana dla jednego użytkownika. Można wybrać inne nazwy użytkowników i/lub hasła (domyślne hasło to openxpki):
--- /usr/local/share/examples/openxpki/config/openxpki/config.d/realm/ca-one/auth/handler.yaml 2019-11-03 20:12:18.000000000 +0100
+++ /usr/local/etc/openxpki/config.d/realm/ca-one/auth/handler.yaml 2019-11-13 21:06:06.353839000 +0100
@@ -34,7 +34,7 @@ Operator Password:
role: RA Operator
user:
raop: "{ssha}JQ2BAoHQZQgecmNjGF143k4U2st6bE5B"
- raop2: "{ssha}JQ2BAoHQZQgecmNjGF143k4U2st6bE5B"
+ raop2: "{ssha}gnqhDvh4y9w+TsGtzpZcD6ht0OlxZm1D"
External Dynamic Role:
type: External
config.d/realm/__REALM__/profile/I18N_OPENXPKI_PROFILE_USER.yaml
Plik2 zawiera konfigurację generowania certyfikatu dla podpisywania poczty. Główna zmiana dotyczy dłuższego (niż domyślne 6 miesięcy) okresu ważności certyfikatu. UWAGA!!! Ten okres nie może przekroczyć daty ważności certyfikatu pośredniego (inaczej openxpkid wyrzuca błąd i nie jest w stanie podpisać nowego certyfikatu).
--- /usr/local/share/examples/openxpki/config/openxpki/config.d/realm/ca-one/profile/I18N_OPENXPKI_PROFILE_USER.yaml 2019-11-03 20:12:18.000000000 +0100
+++ /usr/local/etc/openxpki/config.d/realm/ca-one/profile/I18N_OPENXPKI_PROFILE_USER.yaml 2019-11-13 13:16:56.791254000 +0100
@@ -3,7 +3,7 @@
label: I18N_OPENXPKI_UI_PROFILE_USER_LABEL
validity:
- notafter: +0006
+ notafter: +0018
style:
00_user_basic_style:
Poprawki dla log.conf
Jeżeli nie zostanie poprawione w konfiguracji w/w plików, to należy utworzyć link symboliczny dla log.conf:
ln -s /usr/local/etc/openxpki/webui/log.conf /usr/local/etc/openxpki/log.conf