Vous êtes sur la page 1sur 5

Guide d'installation

Prérequis
Java 17
Nginx
Openssl

Livrable java :

Structure

```markdown
├── ms-name
│ ├── config
│ │ ├── application.yaml
| | ├── cn.p12
| | ├── trust.jks
├── restart.sh
├── ms-name-version.jar
└── logs
```

Description

application.yaml 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
trust.jks contient les certificats d’autres micro-services autorisés à appeler le microservice
restart.sh 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: http://ip:8761/eureka/
enabled: true

Modifier les adresses des AIFs s’ils existent dans la conf :

mt:
....
....
subsidiaries:
'00034':
baseUrl: http://EGY_IP:EGY_PORT
....
....
'CI007':
baseUrl: http://CIB_IP:PORT
....
....

Modifier le trust store et le key store voir la section génération de certificat


lancer le script restart.sh

Redéploiement d'une nouvelle version

cd /app/ms-name
mv ms-name-version.jar ms-name-version.old.jar
mv /tmp/ms-name-new-version.jar .
./restart.sh

S’il y a des changements dans le fichier application.yaml , 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 rootCA.key -out rootCA.crt

Pour chaque micro service :

cn.conf :

[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 cn.conf -newkey rsa:4096 -keyout cn.key -out cn.csr

Génération du CRT

openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in cn.csr -out cn.crt -days 365 -CAcreateserial -extfile cn.conf -extensions v3_req

Génération du Keystore

openssl pkcs12 -export -out cn.p12 -name "cn" -inkey cn.key -in cn.crt

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 rootCA.crt -keystore trust.jks -alias root-ca

Paramétrage du keystore et truststore au niveau du livrable java

il faut changer le fichier /app/ms-name/config/application.yaml 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
├── asset-manifest.json
└── index.html
```

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/access.log 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/mime.types;
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/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
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 https://localhost:9205; # BFF
}

location /oauth2 {
proxy_pass https://localhost:9205; # BFF
}

location /logout {
proxy_pass https://localhost:9205; # BFF
}

location /auth {
proxy_pass http://127.0.0.1:8080; # keycloak
#proxy_redirect off;
}

location /api {

proxy_pass https://127.0.0.1:9205; # BFF


}

location ^~ / {

try_files $uri $uri/ /index.html;


}

# Load configuration files for the default server block.


include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;


location = /40x.html {
}

error_page 500 502 503 504 /50x.html;


location = /50x.html {
}
}

Vous aimerez peut-être aussi