# fortios_firewall_ssl_ssh_profile – Configure SSL/SSH protocol options in Fortinet’s FortiOS and FortiGate

New in version 2.8.

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Return Values
- Status

## Synopsis

- This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the user to set and modify firewall feature and ssl_ssh_profile category. Examples include all parameters and values need to be adjusted to datasources before usage. Tested with FOS v6.0.5

## Requirements

The below requirements are needed on the host that executes this module.

- fortiosapi>=0.9.8

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
firewall_ssl_ssh_profile dictionary | Default: null | Configure SSL/SSH protocol options.
| caname string |  | CA certificate used by SSL Inspection. Source vpn.certificate.local.name.
| comment string |  | Optional comments.
| ftps dictionary |  | Configure FTPS options.

allow_invalid_server_cert
string

Choices:
- enable
- disable

When enabled, allows SSL sessions whose server certificate validation failed.

client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request.

|  | ports integer |  | Ports to use for scanning (1 - 65535).

status
string

Choices:
- disable
- deep-inspection

Configure protocol inspection status.

unsupported_ssl
string

Choices:
- bypass
- inspect
- block

Action based on the SSL encryption used being unsupported.

untrusted_cert
string

Choices:
- allow
- block
- ignore

Allow, ignore, or block the untrusted SSL session server certificate.

| https dictionary |  | Configure HTTPS options.

allow_invalid_server_cert
string

Choices:
- enable
- disable

When enabled, allows SSL sessions whose server certificate validation failed.

client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request.

|  | ports integer |  | Ports to use for scanning (1 - 65535).

status
string

Choices:
- disable
- certificate-inspection
- deep-inspection

Configure protocol inspection status.

unsupported_ssl
string

Choices:
- bypass
- inspect
- block

Action based on the SSL encryption used being unsupported.

untrusted_cert
string

Choices:
- allow
- block
- ignore

Allow, ignore, or block the untrusted SSL session server certificate.

| imaps dictionary |  | Configure IMAPS options.

allow_invalid_server_cert
string

Choices:
- enable
- disable

When enabled, allows SSL sessions whose server certificate validation failed.

client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request.

|  | ports integer |  | Ports to use for scanning (1 - 65535).

status
string

Choices:
- disable
- deep-inspection

Configure protocol inspection status.

unsupported_ssl
string

Choices:
- bypass
- inspect
- block

Action based on the SSL encryption used being unsupported.

untrusted_cert
string

Choices:
- allow
- block
- ignore

Allow, ignore, or block the untrusted SSL session server certificate.

mapi_over_https
string

Choices:
- enable
- disable

Enable/disable inspection of MAPI over HTTPS.

| name string / required |  | Name.
| pop3s dictionary |  | Configure POP3S options.

allow_invalid_server_cert
string

Choices:
- enable
- disable

When enabled, allows SSL sessions whose server certificate validation failed.

client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request.

|  | ports integer |  | Ports to use for scanning (1 - 65535).

status
string

Choices:
- disable
- deep-inspection

Configure protocol inspection status.

unsupported_ssl
string

Choices:
- bypass
- inspect
- block

Action based on the SSL encryption used being unsupported.

untrusted_cert
string

Choices:
- allow
- block
- ignore

Allow, ignore, or block the untrusted SSL session server certificate.

rpc_over_https
string

Choices:
- enable
- disable

Enable/disable inspection of RPC over HTTPS.

| server_cert string |  | Certificate used by SSL Inspection to replace server certificate. Source vpn.certificate.local.name.

server_cert_mode
string

Choices:
- re-sign
- replace

Re-sign or replace the server's certificate.

| smtps dictionary |  | Configure SMTPS options.

allow_invalid_server_cert
string

Choices:
- enable
- disable

When enabled, allows SSL sessions whose server certificate validation failed.

client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request.

|  | ports integer |  | Ports to use for scanning (1 - 65535).

status
string

Choices:
- disable
- deep-inspection

Configure protocol inspection status.

unsupported_ssl
string

Choices:
- bypass
- inspect
- block

Action based on the SSL encryption used being unsupported.

untrusted_cert
string

Choices:
- allow
- block
- ignore

Allow, ignore, or block the untrusted SSL session server certificate.

| ssh dictionary |  | Configure SSH options.

inspect_all
string

Choices:
- disable
- deep-inspection

Level of SSL inspection.

|  | ports integer |  | Ports to use for scanning (1 - 65535).

ssh_algorithm
string

Choices:
- compatible
- high-encryption

Relative strength of encryption algorithms accepted during negotiation.

ssh_policy_check
string

Choices:
- disable
- enable

Enable/disable SSH policy check.

ssh_tun_policy_check
string

Choices:
- disable
- enable

Enable/disable SSH tunnel policy check.

status
string

Choices:
- disable
- deep-inspection

Configure protocol inspection status.

unsupported_version
string

Choices:
- bypass
- block

Action based on SSH version being unsupported.

| ssl dictionary |  | Configure SSL options.

allow_invalid_server_cert
string

Choices:
- enable
- disable

When enabled, allows SSL sessions whose server certificate validation failed.

client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request.

inspect_all
string

Choices:
- disable
- certificate-inspection
- deep-inspection

Level of SSL inspection.

unsupported_ssl
string

Choices:
- bypass
- inspect
- block

Action based on the SSL encryption used being unsupported.

untrusted_cert
string

Choices:
- allow
- block
- ignore

Allow, ignore, or block the untrusted SSL session server certificate.

ssl_anomalies_log
string

Choices:
- disable
- enable

Enable/disable logging SSL anomalies.

| ssl_exempt list |  | Servers to exempt from SSL inspection.
|  | address string |  | IPv4 address object. Source firewall.address.name firewall.addrgrp.name.
|  | address6 string |  | IPv6 address object. Source firewall.address6.name firewall.addrgrp6.name.
|  | fortiguard_category integer |  | FortiGuard category ID.
|  | id integer / required |  | ID number.
|  | regex string |  | Exempt servers by regular expression.

type
string

Choices:
- fortiguard-category
- address
- address6
- wildcard-fqdn
- regex

Type of address object (IPv4 or IPv6) or FortiGuard category.

|  | wildcard_fqdn string |  | Exempt servers by wildcard FQDN. Source firewall.wildcard-fqdn.custom.name firewall.wildcard-fqdn.group.name.

ssl_exemptions_log
string

Choices:
- disable
- enable

Enable/disable logging SSL exemptions.

| ssl_server list |  | SSL servers.

ftps_client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request during the FTPS handshake.

https_client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request during the HTTPS handshake.

|  | id integer / required |  | SSL server ID.

imaps_client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request during the IMAPS handshake.

|  | ip string |  | IPv4 address of the SSL server.

pop3s_client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request during the POP3S handshake.

smtps_client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request during the SMTPS handshake.

ssl_other_client_cert_request
string

Choices:
- bypass
- inspect
- block

Action based on client certificate request during an SSL protocol handshake.

state
string

Choices:
- present
- absent

Deprecated
Starting with Ansible 2.9 we recommend using the top-level 'state' parameter.

Indicates whether to create or remove the object.

| untrusted_caname string |  | Untrusted CA certificate used by SSL Inspection. Source vpn.certificate.local.name.

use_ssl_server
string

Choices:
- disable
- enable

Enable/disable the use of SSL server table for SSL offloading.

whitelist
string

Choices:
- enable
- disable

Enable/disable exempting servers by FortiGuard whitelist.

host string |  | FortiOS or FortiGate IP address.

https
boolean

Choices:
- no
- yes ←

Indicates if the requests towards FortiGate must use HTTPS protocol.

password string | Default: "" | FortiOS or FortiGate password.

ssl_verify
boolean
added in 2.9

Choices:
- no
- yes ←

Ensures FortiGate certificate must be verified by a proper CA.

state
string
added in 2.9

Choices:
- present
- absent

Indicates whether to create or remove the object. This attribute was present already in previous version in a deeper level. It has been moved out to this outer level.

username string |  | FortiOS or FortiGate username.
vdom string | Default: "root" | Virtual domain, among those defined previously. A vdom is a virtual instance of the FortiGate that can be configured and used as a different unit.

## Notes

Note

- Requires fortiosapi library developed by Fortinet
- Run as a local_action in your playbook

## Examples

    - hosts: localhost
      vars:
       host: "192.168.122.40"
       username: "admin"
       password: ""
       vdom: "root"
       ssl_verify: "False"
      tasks:
      - name: Configure SSL/SSH protocol options.
        fortios_firewall_ssl_ssh_profile:
          host:  "{{ host }}"
          username: "{{ username }}"
          password: "{{ password }}"
          vdom:  "{{ vdom }}"
          https: "False"
          state: "present"
          firewall_ssl_ssh_profile:
            caname: "<your_own_value> (source vpn.certificate.local.name)"
            comment: "Optional comments."
            ftps:
                allow_invalid_server_cert: "enable"
                client_cert_request: "bypass"
                ports: "8"
                status: "disable"
                unsupported_ssl: "bypass"
                untrusted_cert: "allow"
            https:
                allow_invalid_server_cert: "enable"
                client_cert_request: "bypass"
                ports: "15"
                status: "disable"
                unsupported_ssl: "bypass"
                untrusted_cert: "allow"
            imaps:
                allow_invalid_server_cert: "enable"
                client_cert_request: "bypass"
                ports: "22"
                status: "disable"
                unsupported_ssl: "bypass"
                untrusted_cert: "allow"
            mapi_over_https: "enable"
            name: "default_name_27"
            pop3s:
                allow_invalid_server_cert: "enable"
                client_cert_request: "bypass"
                ports: "31"
                status: "disable"
                unsupported_ssl: "bypass"
                untrusted_cert: "allow"
            rpc_over_https: "enable"
            server_cert: "<your_own_value> (source vpn.certificate.local.name)"
            server_cert_mode: "re-sign"
            smtps:
                allow_invalid_server_cert: "enable"
                client_cert_request: "bypass"
                ports: "41"
                status: "disable"
                unsupported_ssl: "bypass"
                untrusted_cert: "allow"
            ssh:
                inspect_all: "disable"
                ports: "47"
                ssh_algorithm: "compatible"
                ssh_policy_check: "disable"
                ssh_tun_policy_check: "disable"
                status: "disable"
                unsupported_version: "bypass"
            ssl:
                allow_invalid_server_cert: "enable"
                client_cert_request: "bypass"
                inspect_all: "disable"
                unsupported_ssl: "bypass"
                untrusted_cert: "allow"
            ssl_anomalies_log: "disable"
            ssl_exempt:
             -
                address: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)"
                address6: "<your_own_value> (source firewall.address6.name firewall.addrgrp6.name)"
                fortiguard_category: "63"
                id:  "64"
                regex: "<your_own_value>"
                type: "fortiguard-category"
                wildcard_fqdn: "<your_own_value> (source firewall.wildcard-fqdn.custom.name firewall.wildcard-fqdn.group.name)"
            ssl_exemptions_log: "disable"
            ssl_server:
             -
                ftps_client_cert_request: "bypass"
                https_client_cert_request: "bypass"
                id:  "72"
                imaps_client_cert_request: "bypass"
                ip: "<your_own_value>"
                pop3s_client_cert_request: "bypass"
                smtps_client_cert_request: "bypass"
                ssl_other_client_cert_request: "bypass"
            untrusted_caname: "<your_own_value> (source vpn.certificate.local.name)"
            use_ssl_server: "disable"
            whitelist: "enable"

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
build string | always | Build number of the fortigate image Sample: 1547
http_method string | always | Last method used to provision the content into FortiGate Sample: PUT
http_status string | always | Last result given by FortiGate on last operation applied Sample: 200
mkey string | success | Master key (id) used in the last call to FortiGate Sample: id
name string | always | Name of the table used to fulfill the request Sample: urlfilter
path string | always | Path of the table used to fulfill the request Sample: webfilter
revision string | always | Internal revision number Sample: 17.0.2.10658
serial string | always | Serial number of the unit Sample: FGVMEVYYQT3AB5352
status string | always | Indication of the operation's result Sample: success
vdom string | always | Virtual domain used Sample: root
version string | always | Version of the FortiGate Sample: v5.6.3

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Miguel Angel Munoz (@mamunozgonzalez)
- Nicolas Thomas (@thomnico)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.