Article
· Déc 5 3m de lecture

Configuration programmatique des connexions SSL avec le superserveur

Salutations chers membres de la communauté !

J'ai récemment déployé une image IRIS for Health sur un Docker avec une image Webgateway préconfigurée et je suis tombé sur le problème des configurations SSL qui nous permettent de nous connecter à l'instance IRIS en utilisant HTTPS et en passant par notre Webgateway.

Jusqu'à présent, j'avais toujours déployé IRIS for Health avec une licence communautaire, sur laquelle le serveur Web privé était toujours installé, je n'avais donc besoin que de configurer la connexion Webgateway avec l'instance IRIS déployée :

Accédez au Management Portal en utilisant l'URL fournie par le PWS et activez l'accès au Superserveur depuis son écran de configuration :

En sélectionnant le port 1972, nous pouvions voir les informations de sécurité et il nous suffisait d'activer les connexions SSL avec la configuration SSL/TLS %SuperServer précédemment créée :

Eh bien, avec les versions non communautaires, la dernière étape de la configuration n'est pas réalisable, car nous n'avons pas d'accès Web à notre instance IRIS. Par conséquent, nous devrons le faire par programmation afin que lors du déploiement de notre Docker, il crée non seulement la configuration SSL/TLS, mais active également les connexions SSL avec le superserveur que la passerelle Web utilisera pour la connexion.

Pour ce faire, nous devons utiliser la classe Security.Servers qui nous permet d'effectuer la même configuration. Ci-dessous, vous pouvez voir une méthode de classe qui créera la connexion SSL %SuperServer puis activera lesdites connexions avec le port 1972 :

Method EnableSSLSuperServer(password="")
{
    New $NAMESPACE
    zn "%SYS"
    set certdir=..SSLDirectory
    set CAfile = ..SSLCertAuth
    set certfile = ..SSLCertificate
    set keyfile = ..SSLKey
    set sslconfig = ##class(Security.SSLConfigs).%New()
    do sslconfig.CAFileSet(certdir_CAfile)
    do sslconfig.CertificateFileSet(certdir_certfile)
    do sslconfig.PrivateKeyFileSet(certdir_keyfile)
    if password'="" do sslconfig.PrivateKeyPasswordSet(password)
    do sslconfig.DescriptionSet("SuperServer configuration")
    do sslconfig.EnabledSet(1)
    do sslconfig.TypeSet(1)
    do sslconfig.NameSet("%SuperServer")
    set sc=sslconfig.%Save()
    If (sc'=1) {
        Write !, "WARNING: Creating and saving the %SuperServer SSL configuration failed!"
        Write !, $system.Status.GetErrorText(sc)
    }

    If (sc'=1) {
        Write !, "WARNING: Getting the system security settings failed!"
        Write !, $system.Status.GetErrorText(sc)
    }
    set sc = ##class(Security.Servers).Get("1972",,.propsSuperServer)
    set propsSuperServer("Enabled") = 1
    set propsSuperServer("SSLSupportLevel") = 1
    set propsSuperServer("SSLConfig") = "%SuperServer"
    set sc = ##class(Security.Servers).Modify("1972",,.propsSuperServer)

    If (sc'=1) {
        Write !, "WARNING: Modifying the system's SSLSuperServer property failed!"
        Write !, $system.Status.GetErrorText(sc)    
    }
    Write !, "Done enabling SSL for the SuperServer"
}

Plus en détail, ce sera l'extrait de code qui activera SSL pour 1972 :

set sc = ##class(Security.Servers).Get("1972",,.propsSuperServer)
    set propsSuperServer("Enabled") = 1
    set propsSuperServer("SSLSupportLevel") = 1
    set propsSuperServer("SSLConfig") = "%SuperServer"
    set sc = ##class(Security.Servers).Modify("1972",,.propsSuperServer)

J'espère que vous le trouverez utile !

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer