Guide d'installation
Prérequis
Java 17
Nginx
Openssl
Livrable java :
Structure
```markdown
├── ms-name
│ ├── config
│ │ ├── [Link]
| | ├── cn.p12
| | ├── [Link]
├── [Link]
├── [Link]
└── logs
```
Description
[Link] fichier de configuration microservice tel que la base de données FIA etc.
cn.p12 keystore qui contient le certificat et sa clé privée
[Link] contient les certificats d’autres micro-services autorisés à appeler le microservice
[Link] bash script qui redémarre ms
logs ce dossier est généré lors de la génération des logs par ms , la rotation et la compression est configuré par le ms
Premier Installation
Mettre le livrable dans le dossier /app
Modifier les accès à la base de données en fonction de l’environnement .
spring:
datasource:
url: jdbc:postgresql://ip_base:port/database_name?currentSchema=schema
username: username
password: password
Modifier l'adresse du service Discovery Eureka
eureka:
client:
service-url:
defaultZone: [Link]
enabled: true
Modifier les adresses des AIFs s’ils existent dans la conf :
mt:
....
....
subsidiaries:
'00034':
baseUrl: [Link]
....
....
'CI007':
baseUrl: [Link]
....
....
Modifier le trust store et le key store voir la section génération de certificat
lancer le script [Link]
Redéploiement d'une nouvelle version
cd /app/ms-name
mv [Link] [Link]
mv /tmp/[Link] .
./[Link]
S’il y a des changements dans le fichier [Link] , les différences seront communiquées.
NB : il faut remplacer la manière de lancer les jars par un service système ou bien init.d script
Génération des certificats
Micro services :
Root:
openssl req -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout [Link] -out [Link]
Pour chaque micro service :
[Link] :
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[v3_req]
subjectAltName = @alt_names
[dn]
C = MA
O = ATTIJARI IT AFRICA
OU = OBF
CN = MS-NAME
[req_ext]
subjectAltName = @alt_names
[alt_names]
IP.1 = IP_1
Mettre dans le CN le nom du micro service Mettre dans le IP._1 l'adresse ip de la machine qui héberge le ms
Génération du CSR
openssl req -new -config [Link] -newkey rsa:4096 -keyout [Link] -out [Link]
Génération du CRT
openssl x509 -req -CA [Link] -CAkey [Link] -in [Link] -out [Link] -days 365 -CAcreateserial -extfile [Link] -extensions v3_req
Génération du Keystore
openssl pkcs12 -export -out cn.p12 -name "cn" -inkey [Link] -in [Link]
Génération du truststore :
ce trust store sera partagé entre tous les micro-services s'il contient le certificat racine (root cert) , sinon chaque ms aura son propre trust store contenant les
certificats autorisés
keytool -importcert -file [Link] -keystore [Link] -alias root-ca
Paramétrage du keystore et truststore au niveau du livrable java
il faut changer le fichier /app/ms-name/config/[Link] par :
server:
port: 9210
ssl:
enabled: true
key-store: 'chemin absolue du keystore'
key-alias: "alias de l'entré dans le keystore "
key-store-password: 'keystore password'
key-password: 'private key password'
trust-store: 'chemin absolue du trust store'
trust-store-password: 'truststore password'
client-auth: need
NB : pour la Gateway et le BFF il faut enlever la propriété client-auth
Livrable application backoffice front
Structure
```
├── build
│ ├── static
│ │ ├── css
| | ├── js
| | ├── media
├── [Link]
└── [Link]
```
Déploiement
mv /usr/share/nginx/html/build /usr/share/nginx/html/build_old
mv /tmp/build /usr/share/nginx/html
Nginx conf
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/[Link] main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 50M;
include /etc/nginx/[Link];
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
server {
listen 9206 default_server ssl;
# listen [::]:80 default_server;
server_name _;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_ssl_verify off;
ssl on;
ssl_certificate /etc/nginx/ssl/[Link];
ssl_certificate_key /etc/nginx/ssl/[Link];
ssl_password_file /etc/nginx/ssl/passphrase;
root /usr/share/nginx/html/build; # livrable front
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $http_host;
proxy_ssl_verify off;
location /login {
proxy_pass [Link] # BFF
}
location /oauth2 {
proxy_pass [Link] # BFF
}
location /logout {
proxy_pass [Link] # BFF
}
location /auth {
proxy_pass [Link] # keycloak
#proxy_redirect off;
}
location /api {
proxy_pass [Link] # BFF
}
location ^~ / {
try_files $uri $uri/ /[Link];
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /[Link];
location = /[Link] {
}
error_page 500 502 503 504 /[Link];
location = /[Link] {
}
}