Configuring mTLS authentication
Configure mutual TLS (mTLS) to ensure secure connections between the command-line interface gRPC client and the Ceph NVMe-oF gateway gRPC server.
Before you begin
- Server certificate and key files.
Important: When creating the server certificates, use the subjectAltName parameter to specify the IP addresses of all gateways in the group. For example,
openssl req -x509 -newkey rsa:4096 -nodes -keyout server.key -out server.crt -days 3650 -subj /CN=my.server -addext "subjectAltName=IP:10.243.64.15,IP:10.243.64.17,IP:10.243.64.13,IP:10.243.64.4"
For more information about creating server certificates, see Creating and managing TLS keys and certificates within Securing networks in the Red Hat Enterprise Linux documentation.
- Client certificate and key files.
- A running IBM Storage Ceph 7.1z1 or later cluster.
- Ceph NVMe-oF gateway installed. For more information, see Deploying the NVMe-oF gateway.
Important: Due to known issue BZ 2282560, when using mTLS together with the IBM Storage Ceph Plugin for vSphere a workaround is required. For more information see Known issues in the Release notes of IBM Storage Ceph Plugin for vSphere documentation.
About this task
Configuring mTLS authentication is optional but recommended for secure connectivity.
Use the following procedures to configure mTLS authentication, by using the command-line interface:
The mTLS configuration can be disabled at any time. To disable, see Disabling the mTLS secure connection.
Note: To configure mTLS by using the Ceph Dashboard, see Managing the NVMe-oF service.
Configuring mTLS on the NVMe-oF server
About this task
Procedure
Configuring mTLS on the NVMe-oF client
About this task
The ceph nvmeof commands automatically handle mTLS without specifying certificates.
podman run -it --rm NVME-OF_CLI_CONTAINER_IMAGE:TAG --server-address NVME-OF_SERVER_IP gw info
Note: When using nvmeof-cli commands, certificates are also automatically generated by
cephadm, but must be provided.
- Locate certificates under: /var/lib/ceph/FSID/nvmeof.CERTIFICATE/
- Copy them locally and run:
docker run -v ./server_cert:/root/server_cert:z \ -v ./client_key:/root/client_key:z \ -v ./client_cert:/root/client_cert:z --rm \ NVME-OF_CLI_CONTAINER_IMAGE \ --server-address NVME-OF_SERVER_IP \ --server-port 5500 \ --client-cert /root/client_cert \ --server-cert /root/server_cert \ --client-key /root/client_key \ CLI_COMMAND