|
Rozmiar: 3307
Komentarz: + konfiguracja bazy danych
|
← Wersja 5 z 2019-11-13 20:33:49 ⇥
Rozmiar: 18107
Komentarz: * uuzpełnienie po pierwszym produkcyjnym wdrożeniu
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 8: | Linia 8: |
| = Instalacja oraz uruchomienie OpenX PKI = == instalacja w systemie == Za pomocą własnego [[PoudriereBinaryPkg|repozytorium pakietów]] należy zainstalować oprogramowanie OpenX PKI: |
= OpenXPKI = /!\ /!\ /!\ '''UWAGA!!!''' Poniższy opis dotyczy wersji '''2.5.5'''. Nowa wersja '''3.1.x''' wprowadza zmiany. Dotyczą głównie nazw plików konfiguracyjnych, nieco innej hierarchi plików. /!\ /!\ /!\ OpenXPKI [ [[#url1|1]] ] to oprogramowanie pozwalające na wygodny i łatwy (przeglądarka internetowa) zarządzanie certyfikatami SSL/TLS. Całość oprogramowania jest napisana w PERLu, zaś jako "backend" służy baza danych (domyślnie [[SerwerBazDanychMysql|mySQL]]). = Instalacja = Za pomocą własnego [[PoudriereBinaryPkg|repozytorium pakietów]] należy zainstalować oprogramowanie OpenXPKI: |
| Linia 16: | Linia 19: |
| Należy pamiętać, aby dla pakietu '''devel/p5-Log-Dispatch''' nie wybrać opcji APACHE: w przeciwnym przypadku będzie instalowany [[FreshPorts:www/apache24|apache24]] (co nie zawsze jest pożądane). | == 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 [[FreshPorts:www/apache24|apache24]] - zupełnie zbędne przy korzystaniu z [[NginxWebServer|nginx]]-a. |
| Linia 27: | Linia 31: |
| Nie można zapominać o właściwych uprawnieniach dla użytkownika ''www'': {{{#!highlight bash numbers=off setfacl -m u:www:rwx::allow /var/log/openxpki/ /var/log/openxpki/webui.log }}} |
|
| Linia 28: | Linia 37: |
| OpenX PKI opiera się o bazę danych. Preferowana to mySQL, ale na liście schematów do instalacji jest również PostgreSQL korzystać z bazy, należy doinstalować odpowiedni pakiet: | OpenXPKI [ [[#url1|1]] ] opiera się o bazę danych. Preferowana to mySQL [ [[#page2| dok. 2]] ] , ale na liście schematów do instalacji jest również PostgreSQL [ [[#page1| dok. 1]] ] korzystać z bazy, należy doinstalować odpowiedni pakiet<<FootNote(Na podstawie dyskusji mailowej z deweloperem, wynika, że oprócz mySQL-a wspierany jest PostgreSQL (być może dotyczy wersji '''3.x'''). SQLite nie jest aktualnie wspierany.)>>: |
| Linia 31: | Linia 40: |
| pkg install -Uy p5-DBD-Pg | pkg install -Uy databases/p5-DBD-Pg |
| Linia 34: | Linia 43: |
| pkg install -Uy p5-DBD-mysql }}} === Utworzenie bazy danych oraz wgranie schematu === Na podstawie dokumentacji dla [[SerwerBazDanychMysql|mysql]]-a lub [[SerwerBazDanychPgsql|postgres]]-a należy utworzyć dedykowaną bazę danych oraz wgrać stosowny schemat umieszczony w katalogu `/usr/local/share/examples/openxpki/config/sql/` (poniżej polecenia dla PostgreSQL): |
pkg install -Uy databases/p5-DBD-mysql # w przypadku SQLite pkg install -Uy databases/p5-DBD-SQLite }}} === mySQL === Na podstawie dokumentacji dla [[SerwerBazDanychMysql|mysql]]-a należy utworzyć dedykowaną bazę danych oraz wgrać stosowny schemat umieszczony w katalogu `/usr/local/share/examples/openxpki/config/sql/`: {{{#!highlight mysql numbers=off 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: {{{#!highlight bash numbers=off cat /usr/local/share/examples/openxpki/config/sql/schema-mysql.sql | mysql -u openxpki_user -p openxpkidb }}} === PostgreSQL === Na podstawie dokumentacji dla [[SerwerBazDanychPgsql|postgres]]-a należy utworzyć dedykowaną bazę danych oraz wgrać stosowny schemat umieszczony w katalogu `/usr/local/share/examples/openxpki/config/sql/`: |
| Linia 45: | Linia 79: |
| == Plik konfiguracyjny == {{{#!highlight ini numbers=off # komentarz parametr = wartość }}} == Skrypt mySQL == {{{#!highlight mysql numbers=off SELECT * FROM tbl_name; |
== Instalacja plików konfiguracyjnych == Należy zainstalować pliki konfiguracyjne dla demona `openxpkid` oraz dla webui: {{{#!highlight bash numbers=off 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 [[NginxWebServer|webowego]], dlatego też trzeba poprawić uprawnienia: {{{#!highlight bash numbers=off 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: {{{#!highlight bash numbers=off 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 ==== {{{#!highlight diff numbers=off --- /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 ==== {{{#!highlight diff numbers=off --- /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 ==== {{{#!highlight diff numbers=off --- /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''): {{{#!highlight diff numbers=off --- /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 ==== Plik<<FootNote(W wersji '''3.x''' plik jest nazwany już inaczej.)>> 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). {{{#!highlight diff numbers=off --- /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`: {{{#!highlight bash numbers=off ln -s /usr/local/etc/openxpki/webui/log.conf /usr/local/etc/openxpki/log.conf }}} = Instalacja plików witryny = Pliki witryny dzielą się na dwie składowe: pliki statyczne oraz skrypty CGI. Całość należy zainstalować na partycji posiadającej uprawnienia `exec` (szczególnie przy [[PodzialNaPartycjeBeAdm|partycje zfs]]). == Utworzenie dedykowanej partycji == {{{#!highlight bash numbers=off zfs create -o exec=on tank/www/htdocs/virtuals/openxpki zfs set exec=on tank/www/htdocs/virtuals/openxpki mkdir -p /var/www/htdocs/virtuals/openxpki/data/ /var/www/htdocs/virtuals/openxpki/cgi-bin/ }}} == Przekopiowanie plików == {{{#!highlight bash numbers=off cp -pr /usr/local/share/examples/openxpki/cgi-bin /var/www/htdocs/virtuals/openxpki/ cp -pr /usr/local/share/examples/openxpki/htdocs/* /var/www/htdocs/virtuals/openxpki/data/ # ustawienie atrybutu exec dla plików (PERLowych) chmod +x /var/www/htdocs/virtuals/openxpki/cgi-bin/* }}} == shebangfix == W plikach '''fcgi''' należy poprawić ścieżkę do interpretera (perl-a), tak aby skrypty mogły być wykonane bezpośrendio z powłoki {{{#!highlight bash numbers=off find /var/www/htdocs/virtuals/openxpki/cgi-bin/ -type f -exec sed -i '' -e '1s|^\#![[:space:]]*/usr/bin/perl\([[:space:]]\)|\#!/usr/local/bin/perl\1|' {} \; }}} = Uruchomienie usług = Za wszystkie operacje związane z certyfikatami oraz zapisem do bazy danych odpowiedzialny jest `openxpkid`. Dlatego musi być uruchomiony przez korzystaniem z WebUI. W tym celu należy ustawić zmienną dla skryptów startowych '''rc''': {{{#!highlight bash numbers=off openxpki_enable="YES" }}} a następnie uruchomić dmeona {{{#!highlight bash numbers=off service openxpki start }}} == Modyfikacja dostępu do socketu == Generalnie trzeba poprawić skrypty startowe, ale na wszelki wypadek można ustawić ręcznie: {{{#!highlight bash numbers=off chmod 0777 /var/openxpki/openxpki.socket }}} = Wygenerowanie CA = Można wykorzystać skrypt `/usr/local/share/examples/openxpki/config/sampleconfig.sh` w celu wygenerowania CA oraz ustawień przy generowaniu certyfikatów. Jednakże plik należy skopiować gdzieś i odpowiednio go zmodyfikować. {{{#!highlight diff numbers=off --- /root/sampleconfig.sh 2019-11-08 12:33:13.713139782 +0100 +++ /root/bsd-serwis-ca.sh 2019-11-08 12:43:49.893410982 +0100 @@ -18,7 +18,7 @@ else exit 1 fi -REALM='democa' +REALM='bsdserwis' FQDN=`hostname -f` # For automated testing we want to have this set to root # unset this to get random passwords (put into the .pass files) @@ -50,24 +50,24 @@ PASS_SUFFIX='pass' BACKUP_SUFFIX='~' # root CA selfsigned (in production use company's root certificate) -ROOT_CA='OpenXPKI_Root_CA' +ROOT_CA='BSD_Serwis_Root_CA' ROOT_CA_REQUEST="${SSL_REALM}/${ROOT_CA}.${REQUEST_SUFFIX}" ROOT_CA_KEY="${SSL_REALM}/${ROOT_CA}.${KEY_SUFFIX}" ROOT_CA_KEY_PASSWORD="${SSL_REALM}/${ROOT_CA}.${PASS_SUFFIX}" ROOT_CA_CERTIFICATE="${SSL_REALM}/${ROOT_CA}.${CERTIFICATE_SUFFIX}" -ROOT_CA_SUBJECT='/CN=OpenXPKI Root CA 1' -ROOT_CA_SERVER_FQDN='rootca.openxpki.net' +ROOT_CA_SUBJECT='/CN=BSD Serwis Root CA 1' +ROOT_CA_SERVER_FQDN='ca.bsdserwis.com' # issuing CA signed by root CA above -ISSUING_CA='OpenXPKI_Issuing_CA' +ISSUING_CA='BSD_Serwis_Issuing_CA' ISSUING_CA_REQUEST="${SSL_REALM}/${ISSUING_CA}.${REQUEST_SUFFIX}" ISSUING_CA_KEY="${SSL_REALM}/${ISSUING_CA}.${KEY_SUFFIX}" ISSUING_CA_KEY_PASSWORD="${SSL_REALM}/${ISSUING_CA}.${PASS_SUFFIX}" ISSUING_CA_CERTIFICATE="${SSL_REALM}/${ISSUING_CA}.${CERTIFICATE_SUFFIX}" -ISSUING_CA_SUBJECT='/C=DE/O=OpenXPKI/OU=PKI/CN=OpenXPKI Demo Issuing CA 1' +ISSUING_CA_SUBJECT='/C=PL/O=BSD Serwis/OU=Security/CN=BSD Serwis Signing CA 1' # SCEP registration authority certificate signed by root CA above -SCEP='OpenXPKI_SCEP_RA' +SCEP='BSD_Serwis_SCEP_RA' SCEP_REQUEST="${SSL_REALM}/${SCEP}.${REQUEST_SUFFIX}" SCEP_KEY="${SSL_REALM}/${SCEP}.${KEY_SUFFIX}" SCEP_KEY_PASSWORD="${SSL_REALM}/${SCEP}.${PASS_SUFFIX}" @@ -75,7 +75,7 @@ SCEP_CERTIFICATE="${SSL_REALM}/${SCEP}.$ SCEP_SUBJECT="/CN=${FQDN}:scep-ra" # Apache WEB certificate signed by root CA above -WEB='OpenXPKI_WebUI' +WEB='BSD_Serwis_WebUI' WEB_REQUEST="${SSL_REALM}/${WEB}.${REQUEST_SUFFIX}" WEB_KEY="${SSL_REALM}/${WEB}.${KEY_SUFFIX}" WEB_KEY_PASSWORD="${SSL_REALM}/${WEB}.${PASS_SUFFIX}" @@ -84,7 +84,7 @@ WEB_SUBJECT="/CN=${FQDN}" WEB_SERVER_FQDN="${FQDN}" # data vault certificate selfsigned -DATAVAULT='OpenXPKI_DataVault' +DATAVAULT='BSD_Serwis_DataVault' DATAVAULT_REQUEST="${SSL_REALM}/${DATAVAULT}.${REQUEST_SUFFIX}" DATAVAULT_KEY="${SSL_REALM}/${DATAVAULT}.${KEY_SUFFIX}" DATAVAULT_KEY_PASSWORD="${SSL_REALM}/${DATAVAULT}.${PASS_SUFFIX}" @@ -96,11 +96,11 @@ DATAVAULT_SUBJECT='/CN=Internal DataVaul # BITS=4096 DAYS=371 # 2 years (default value not used for further enhancements) -RDAYS="3655" # 10 years for root -IDAYS="1828" # 5 years for issuing -SDAYS="365" # 1 years for scep -WDAYS="1096" # 3 years web -DDAYS="$RDAYS" # 10 years datavault (same a root) +RDAYS="7355" # 20 years for root +IDAYS="3655" # 10 years for issuing +SDAYS="1835" # 5 years for scep +WDAYS="1098" # 3 years web +DDAYS="$RDAYS" # 20 years datavault (same a root) # creation neccessary directories and files echo -n "creating configuration for openssl ($OPENSSL_CONF) .. " }}} = Konfiguracja nginx = Konfiguracja [[NginxWebServer|nginx]]-a jest wykonana jako "''lokacja''" dowolnego serwera witualnego<<FootNote('''05.11.2019''': do sprawdzenia, jak to zrobić jako ''root'' dedykowanego serwera wirtualnego.)>><<FootNote(Docelowo można wykonać jako konfigurację dołączaną do serwera oraz przechowywaną w [[UniMaster|repozytorium konfiguracji]].)>>. {{{#!highlight nginx numbers=off location /.well-known/est { alias /var/www/htdocs/virtuals/openxpki/cgi-bin/est.fcgi; gzip off; fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock; fastcgi_index est.fcgi; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; fastcgi_param REMOTE_USER $remote_user; fastcgi_intercept_errors off; fastcgi_read_timeout 180; } location /openxpki/ { alias /var/www/htdocs/virtuals/openxpki/data/; index index.html; } location ~ ^/(scep|soap|rpc)/$ { alias /var/www/htdocs/virtuals/openxpki/cgi-bin/$1.fcgi; gzip off; fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock; fastcgi_index $1.fcgi; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; fastcgi_param REMOTE_USER $remote_user; fastcgi_intercept_errors off; fastcgi_read_timeout 180; } location ~ ^/cgi-bin/(?<oxp>.*)\.fcgi$ { alias /var/www/htdocs/virtuals/openxpki/cgi-bin/$oxp.fcgi; gzip off; fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock; fastcgi_index webui.fcgi; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; fastcgi_param REMOTE_USER $remote_user; fastcgi_intercept_errors off; fastcgi_read_timeout 180; } |
| Linia 57: | Linia 392: |
| 1. <<Anchor(url1)>>[[https://www.openxpki.org/|OpenX PKI|target="_blank"]] 2. <<Anchor(url2)>>[[https://openxpki.readthedocs.io/en/latest/quickstart.html|OpenX PKI: szybki start|target="_blank"]] 3. <<Anchor(url3)>>[[url3||target="_blank"]] 4. <<Anchor(url4)>>[[url4||target="_blank"]] |
1. <<Anchor(url1)>>[[https://www.openxpki.org/|OpenXPKI|target="_blank"]] 1. <<Anchor(url2)>>[[https://openxpki.readthedocs.io/en/latest/quickstart.html|OpenXPKI: szybki start|target="_blank"]] 1. <<Anchor(url3)>>[[https://openxpki.readthedocs.io/en/stable/subsystems/soap.html|SOAP w OpenXPKI|target="_blank"]] 1. <<Anchor(url4)>>[[https://tools.ietf.org/html/rfc7030|EST|target="_blank"]] 1. <<Anchor(url5)>>[[WikiPedia:Simple_Certificate_Enrollment_Protocol|Simple Certificate Enrollment Protocol]] |
| Linia 68: | Linia 404: |
| 1. <<Anchor(page4)>>[[url4|]] | 1. <<Anchor(page4)>>[[page4|]] |
Wydrukuj tę dokumentację Pokaż jako slajdy
Spis Treści
OpenXPKI
UWAGA!!! Poniższy opis dotyczy wersji 2.5.5. Nowa wersja 3.1.x wprowadza zmiany. Dotyczą głównie nazw plików konfiguracyjnych, nieco innej hierarchi plików.
OpenXPKI [ 1 ] to oprogramowanie pozwalające na wygodny i łatwy (przeglądarka internetowa) zarządzanie certyfikatami SSL/TLS. Całość oprogramowania jest napisana w PERLu, zaś jako "backend" służy baza danych (domyślnie mySQL).
Instalacja
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
Instalacja plików witryny
Pliki witryny dzielą się na dwie składowe: pliki statyczne oraz skrypty CGI. Całość należy zainstalować na partycji posiadającej uprawnienia exec (szczególnie przy partycje zfs).
Utworzenie dedykowanej partycji
zfs create -o exec=on tank/www/htdocs/virtuals/openxpki
zfs set exec=on tank/www/htdocs/virtuals/openxpki
mkdir -p /var/www/htdocs/virtuals/openxpki/data/ /var/www/htdocs/virtuals/openxpki/cgi-bin/
Przekopiowanie plików
cp -pr /usr/local/share/examples/openxpki/cgi-bin /var/www/htdocs/virtuals/openxpki/
cp -pr /usr/local/share/examples/openxpki/htdocs/* /var/www/htdocs/virtuals/openxpki/data/
# ustawienie atrybutu exec dla plików (PERLowych)
chmod +x /var/www/htdocs/virtuals/openxpki/cgi-bin/*
shebangfix
W plikach fcgi należy poprawić ścieżkę do interpretera (perl-a), tak aby skrypty mogły być wykonane bezpośrendio z powłoki
find /var/www/htdocs/virtuals/openxpki/cgi-bin/ -type f -exec sed -i '' -e '1s|^\#![[:space:]]*/usr/bin/perl\([[:space:]]\)|\#!/usr/local/bin/perl\1|' {} \;
Uruchomienie usług
Za wszystkie operacje związane z certyfikatami oraz zapisem do bazy danych odpowiedzialny jest openxpkid. Dlatego musi być uruchomiony przez korzystaniem z WebUI. W tym celu należy ustawić zmienną dla skryptów startowych rc:
openxpki_enable="YES"
a następnie uruchomić dmeona
service openxpki start
Modyfikacja dostępu do socketu
Generalnie trzeba poprawić skrypty startowe, ale na wszelki wypadek można ustawić ręcznie:
chmod 0777 /var/openxpki/openxpki.socket
Wygenerowanie CA
Można wykorzystać skrypt /usr/local/share/examples/openxpki/config/sampleconfig.sh w celu wygenerowania CA oraz ustawień przy generowaniu certyfikatów. Jednakże plik należy skopiować gdzieś i odpowiednio go zmodyfikować.
--- /root/sampleconfig.sh 2019-11-08 12:33:13.713139782 +0100
+++ /root/bsd-serwis-ca.sh 2019-11-08 12:43:49.893410982 +0100
@@ -18,7 +18,7 @@ else
exit 1
fi
-REALM='democa'
+REALM='bsdserwis'
FQDN=`hostname -f`
# For automated testing we want to have this set to root
# unset this to get random passwords (put into the .pass files)
@@ -50,24 +50,24 @@ PASS_SUFFIX='pass'
BACKUP_SUFFIX='~'
# root CA selfsigned (in production use company's root certificate)
-ROOT_CA='OpenXPKI_Root_CA'
+ROOT_CA='BSD_Serwis_Root_CA'
ROOT_CA_REQUEST="${SSL_REALM}/${ROOT_CA}.${REQUEST_SUFFIX}"
ROOT_CA_KEY="${SSL_REALM}/${ROOT_CA}.${KEY_SUFFIX}"
ROOT_CA_KEY_PASSWORD="${SSL_REALM}/${ROOT_CA}.${PASS_SUFFIX}"
ROOT_CA_CERTIFICATE="${SSL_REALM}/${ROOT_CA}.${CERTIFICATE_SUFFIX}"
-ROOT_CA_SUBJECT='/CN=OpenXPKI Root CA 1'
-ROOT_CA_SERVER_FQDN='rootca.openxpki.net'
+ROOT_CA_SUBJECT='/CN=BSD Serwis Root CA 1'
+ROOT_CA_SERVER_FQDN='ca.bsdserwis.com'
# issuing CA signed by root CA above
-ISSUING_CA='OpenXPKI_Issuing_CA'
+ISSUING_CA='BSD_Serwis_Issuing_CA'
ISSUING_CA_REQUEST="${SSL_REALM}/${ISSUING_CA}.${REQUEST_SUFFIX}"
ISSUING_CA_KEY="${SSL_REALM}/${ISSUING_CA}.${KEY_SUFFIX}"
ISSUING_CA_KEY_PASSWORD="${SSL_REALM}/${ISSUING_CA}.${PASS_SUFFIX}"
ISSUING_CA_CERTIFICATE="${SSL_REALM}/${ISSUING_CA}.${CERTIFICATE_SUFFIX}"
-ISSUING_CA_SUBJECT='/C=DE/O=OpenXPKI/OU=PKI/CN=OpenXPKI Demo Issuing CA 1'
+ISSUING_CA_SUBJECT='/C=PL/O=BSD Serwis/OU=Security/CN=BSD Serwis Signing CA 1'
# SCEP registration authority certificate signed by root CA above
-SCEP='OpenXPKI_SCEP_RA'
+SCEP='BSD_Serwis_SCEP_RA'
SCEP_REQUEST="${SSL_REALM}/${SCEP}.${REQUEST_SUFFIX}"
SCEP_KEY="${SSL_REALM}/${SCEP}.${KEY_SUFFIX}"
SCEP_KEY_PASSWORD="${SSL_REALM}/${SCEP}.${PASS_SUFFIX}"
@@ -75,7 +75,7 @@ SCEP_CERTIFICATE="${SSL_REALM}/${SCEP}.$
SCEP_SUBJECT="/CN=${FQDN}:scep-ra"
# Apache WEB certificate signed by root CA above
-WEB='OpenXPKI_WebUI'
+WEB='BSD_Serwis_WebUI'
WEB_REQUEST="${SSL_REALM}/${WEB}.${REQUEST_SUFFIX}"
WEB_KEY="${SSL_REALM}/${WEB}.${KEY_SUFFIX}"
WEB_KEY_PASSWORD="${SSL_REALM}/${WEB}.${PASS_SUFFIX}"
@@ -84,7 +84,7 @@ WEB_SUBJECT="/CN=${FQDN}"
WEB_SERVER_FQDN="${FQDN}"
# data vault certificate selfsigned
-DATAVAULT='OpenXPKI_DataVault'
+DATAVAULT='BSD_Serwis_DataVault'
DATAVAULT_REQUEST="${SSL_REALM}/${DATAVAULT}.${REQUEST_SUFFIX}"
DATAVAULT_KEY="${SSL_REALM}/${DATAVAULT}.${KEY_SUFFIX}"
DATAVAULT_KEY_PASSWORD="${SSL_REALM}/${DATAVAULT}.${PASS_SUFFIX}"
@@ -96,11 +96,11 @@ DATAVAULT_SUBJECT='/CN=Internal DataVaul
#
BITS=4096
DAYS=371 # 2 years (default value not used for further enhancements)
-RDAYS="3655" # 10 years for root
-IDAYS="1828" # 5 years for issuing
-SDAYS="365" # 1 years for scep
-WDAYS="1096" # 3 years web
-DDAYS="$RDAYS" # 10 years datavault (same a root)
+RDAYS="7355" # 20 years for root
+IDAYS="3655" # 10 years for issuing
+SDAYS="1835" # 5 years for scep
+WDAYS="1098" # 3 years web
+DDAYS="$RDAYS" # 20 years datavault (same a root)
# creation neccessary directories and files
echo -n "creating configuration for openssl ($OPENSSL_CONF) .. "
Konfiguracja nginx
Konfiguracja nginx-a jest wykonana jako "lokacja" dowolnego serwera witualnego34.
location /.well-known/est {
alias /var/www/htdocs/virtuals/openxpki/cgi-bin/est.fcgi;
gzip off;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_index est.fcgi;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_intercept_errors off;
fastcgi_read_timeout 180;
}
location /openxpki/ {
alias /var/www/htdocs/virtuals/openxpki/data/;
index index.html;
}
location ~ ^/(scep|soap|rpc)/$ {
alias /var/www/htdocs/virtuals/openxpki/cgi-bin/$1.fcgi;
gzip off;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_index $1.fcgi;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_intercept_errors off;
fastcgi_read_timeout 180;
}
location ~ ^/cgi-bin/(?<oxp>.*)\.fcgi$ {
alias /var/www/htdocs/virtuals/openxpki/cgi-bin/$oxp.fcgi;
gzip off;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_index webui.fcgi;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_intercept_errors off;
fastcgi_read_timeout 180;
}
Źródła w sieci internet
Odnośniki do dokumentacji
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
Na podstawie dyskusji mailowej z deweloperem, wynika, że oprócz mySQL-a wspierany jest PostgreSQL (być może dotyczy wersji 3.x). SQLite nie jest aktualnie wspierany. (1)
W wersji 3.x plik jest nazwany już inaczej. (2)
05.11.2019: do sprawdzenia, jak to zrobić jako root dedykowanego serwera wirtualnego. (3)
Docelowo można wykonać jako konfigurację dołączaną do serwera oraz przechowywaną w repozytorium konfiguracji. (4)
