ome / design

OME Design proposals
http://ome.github.io/design/
1 stars 15 forks source link

OMERO.server 6.0.0: require certificates #105

Open manics opened 4 years ago

manics commented 4 years ago

Background

Recent Linux distributions including Ubuntu 18.04, CentOS 8, and conda, include a version of OpenSSL that disables weak ciphers such as Anonymous DH (ADH) as used by OMERO. In many cases our suggested workaround to set @SECLEVEL=0 does not work:

Several users have reported success when using the omero-certificates plugin

The client work required to support ciphers other than ADH was added as part of the work to enable websockets, since in most cases clients connect to a websocket through an webserver such as Nginx that doesn't support ADH. Note that the certificates do not need to be signed by a recognised certificate authority since OMERO clients never validate any SSL connections. This means the server can optionally autogenerate them without any user input.

Proposal

Supported ciphers and protocols

Remove the weak ciphers from the default OMERO configuration. The default OMERO configuration will include the following properties:

Alternatively we could take this opportunity to improve the security slightly (though since the default is for clients to never verify certificates it doesn't really make much difference):

Certificates properties

Require certificates for IceSSL. These certificates may be self-signed since verification is disabled by default in clients. The following properties are required:

Certificate creation

Add a new property that controls whether OMERO.server should automatically generate self-signed certificates on startup:

If omero.certificates.autogenerate: true then omero admin rewrite will create a new self-signed PKCS12 certificate using the openssl utility and store it in omero.glacier2.IceSSL.CertFile with password omero.glacier2.IceSSL.Password. The public certificate will be regenerated on every start to avoid worrying about expiry dates. Intermediate files server.pem (self-signed certificate in PEM format) and server.key (private key in PEM format) will be stored in omero.glacier2.IceSSL.DefaultDir. Most of this functionality is already implemented by the omero-certificates plugin, though some work will be required to remove the automatic setting of properties.

If omero.certificates.autogenerate: false the sysadmin is responsible for creating certificates and changing any default properties.