Académique Documents
Professionnel Documents
Culture Documents
Guide Setup
Guide Setup
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
spring:
datasource:
url: jdbc:postgresql://ip_base:port/database_name?currentSchema=schema
username: username
password: password
eureka:
client:
service-url:
defaultZone: http://ip:8761/eureka/
enabled: true
mt:
....
....
subsidiaries:
'00034':
baseUrl: http://EGY_IP:EGY_PORT
....
....
'CI007':
baseUrl: http://CIB_IP:PORT
....
....
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
Micro services :
Root:
openssl req -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt
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
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
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"';
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
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 {
location ^~ / {