SSL Configuration Options

Table 1.1 summarizes the configuration options introduced in the previous section for using SSL. Note that all of these options are global in scope; in other words, they must appear in the [global] section of the configuration file.

Table A-1. SSL Configuration Options

Option

Parameters

Function

Default

Scope

ssl

boolean

Indicates whether SSL mode is enabled with Samba.

no

Global

ssl hosts

string (list of addresses)

Specifies a list of hosts that must always connect using SSL.

None

Global

ssl hosts resign

string (list of addresses)

Specifies a list of hosts that never connect using SS.

None

Global

ssl CA certDir

string (fully-qualified pathname)

Specifies the directory where the certificates are stored.

None

Global

ssl CA certFile

string (fully-qualified pathname)

Specifies a file that contains all of the certificates for Samba.

None

Global

ssl server cert

string (fully-qualified pathname)

Specifies the location of the server’s certificate.

None

Global

ssl server key

string (fully-qualified pathname)

Specifies the location of the server’s private key.

None

Global

ssl client cert

string (fully-qualified pathname)

Specifies the location of the client’s certificate.

None

Global

ssl client key

string (fully-qualified pathname)

Specifies the location of the client’s private key.

None

Global

ssl require clientcert

boolean

Indicates whether Samba should require each client to have a certificate.

no

Global

ssl require servercert

boolean

Indicates whether the server itself should have a certificate.

no

Global

ssl ciphers

String

Specifies the cipher suite to use during protocol negotiation.

None

Global

ssl version

ssl2or3, ssl3, or tls1

Specifies the version of SSL to use.

ssl2or3

Global

ssl compatibility

boolean

Indicates whether compatibility with other implementations of SSL should be activated.

no

Global

ssl

This global option configures Samba to use SSL for communication between itself and clients. The default value of this option is no. You can reset it as follows:

[global]
	ssl = yes

Note that in order to use this option, you must have a proxy for Windows 95/98 clients, such as in the model presented earlier in this chapter.

ssl hosts

This option specifies the hosts that will be forced into using SSL. The syntax for specifying hosts and addresses is the same as the hosts allow and the hosts deny configuration options. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.

This example specifies that all hosts that fall into the 192.168.220 subnet must use SSL connections with the client. This type of structure is useful if you know that various connections will be made by a subnet that lies across an untrusted network, such as the Internet. If neither this option nor the ssl hosts resign option has been specified, and ssl is set to yes, Samba will allow only SSL connections from all clients.

ssl hosts resign

This option specifies the hosts that will not be forced into SSL mode. The syntax for specifying hosts and addresses is the same as the hosts allow and the hosts deny configuration options. For example:

[global]
	ssl = yes
	ssl hosts resign = 160.2.310. 160.2.320.

This example specifies that all hosts that fall into the 160.2.310 or 160.2.320 subnets will not use SSL connections with the client. If neither this option nor the ssl hosts option has been specified, and ssl is set to yes, Samba will allow only SSL connections from all clients.

ssl CA certDir

This option specifies the directory containing the certificate authority’s certificates that Samba will use to authenticate clients. There must be one file in this directory for each certificate authority, named as specified earlier in this chapter. Any other files in this directory are ignored. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certDir = /usr/local/samba/cert

There is no default for this option. You can alternatively use the option ssl CA certFile if you wish to place all the certificate authority information in the same file.

ssl CA certFile

This option specifies a file that contains the certificate authority’s certificates that Samba will use to authenticate clients. This option differs from ssl CA certDir in that there is only one file used for all the certificate authorities. An example of its usage follows:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certFile = /usr/local/samba/cert/certFile

There is no default for this option. You can also use the option ssl CA certDir if you wish to have a separate file for each certificate authority that Samba trusts.

ssl server cert

This option specifies the location of the server’s certificate. This option is mandatory; the server must have a certificate in order to use SSL. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certFile = /usr/local/samba/cert/certFile
	ssl server cert = /usr/local/samba/private/server.pem

There is no default for this option. Note that the certificate may contain the private key for the server.

ssl server key

This option specifies the location of the server’s private key. You should ensure that the location of the file cannot be accessed by anyone other than root. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certFile = /usr/local/samba/cert/certFile
	ssl server key = /usr/local/samba/private/samba.pem

There is no default for this option. Note that the private key may be contained in the certificate for the server.

ssl client cert

This option specifies the location of the client’s certificate. The certificate may be requested by the Samba server with the ssl require clientcert option; the certificate is also used by smbclient. For example:

[global]
    ssl = yes
    ssl hosts = 192.168.220.
    ssl CA certFile = /usr/local/samba/cert/certFile
    ssl server cert = /usr/local/ssl/private/server.pem
    ssl client cert= /usr/local/ssl/private/clientcert.pem

There is no default for this option.

ssl client key

This option specifies the location of the client’s private key. You should ensure that the location of the file cannot be accessed by anyone other than root. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certDir = /usr/local/samba/cert/
	ssl server key = /usr/local/ssl/private/samba.pem
	ssl client key = /usr/local/ssl/private/clients.pem

There is no default for this option. This option is only needed if the client has a certificate.

ssl require clientcert

This option specifies whether the client is required to have a certificate. The certificates listed with either the ssl CA certDir or the ssl CA certFile will be searched to confirm that the client has a valid certificate and is authorized to connect to the Samba server. The value of this option is a simple boolean. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certFile = /usr/local/samba/cert/certFile
	ssl require clientcert = yes

We recommend that you require certificates from all clients that could be connecting to the Samba server. The default value for this option is no.

ssl require servercert

This option specifies whether the server is required to have a certificate. Again, this will be used by the smbclient program. The value of this option is a simple boolean. For example:

[global]
	ssl = yes
	ssl hosts = 192.168.220.
	ssl CA certFile = /usr/local/samba/cert/certFile
	ssl require clientcert = yes
	ssl require servercert = yes

Although we recommend that you require certificates from all clients that could be connecting to the Samba server, a server certificate is not required. It is, however, recommended. The default value for this option is no.

ssl ciphers

This option sets the ciphers on which SSL will decide during the negotiation phase of the SSL connection. Samba can use any of the following ciphers:

DEFAULT
DES-CFB-M1
NULL-MD5
RC4-MD5
EXP-RC4-MD5
RC2-CBC-MD5
EXP-RC2-CBC-MD5
IDEA-CBC-MD5
DES-CBC-MD5
DES-CBC-SHA
DES-CBC3-MD5
DES-CBC3-SHA
RC4-64-MD5
NULL

It is best not to set this option unless you are familiar with the SSL protocol and want to mandate a specific cipher suite.

ssl version

This global option specifies the version of SSL that Samba will use when handling encrypted connections. The default value is ssl2or3, which specifies that either version 2 or 3 of the SSL protocol can be used, depending on which version is negotiated in the handshake between the server and the client. However, if you want Samba to use only a specific version of the protocol, you can specify the following:

[global]
	ssl version = ssl3

Again, it is best not to set this option unless you are familiar with the SSL protocol and want to mandate a specific version.

ssl compatibility

This global option specifies whether Samba should be configured to use other versions of SSL. However, because no other versions exist at this writing, the issue is moot and the variable should always be left at the default.

Get Using Samba now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.