parent
e8e73e5436
commit
edb7a912cc
@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
- name: "Retrieve PID 1 process information (Linux)"
|
||||||
|
command: "ps 1"
|
||||||
|
register: pid1
|
||||||
|
when:
|
||||||
|
- ansible_system is match("Linux")
|
||||||
|
- pid1 is not defined
|
||||||
|
|
||||||
|
- name: "Restart the splunkd service - Via CLI"
|
||||||
|
command: "{{ splunk_exec }} restart --answer-yes --accept-license"
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ splunk_user }}"
|
||||||
|
register: task_result
|
||||||
|
until: task_result.rc == 0
|
||||||
|
retries: 3
|
||||||
|
delay: "{{ delay_num }}"
|
||||||
|
when: not splunk_enable_service
|
||||||
|
|
||||||
|
- name: "Restart the splunkd service - Via systemd"
|
||||||
|
service:
|
||||||
|
name: "{% if pid1.stdout.find('systemd') != -1 %}Splunkd{% else %}splunk{% endif %}"
|
||||||
|
state: restarted
|
||||||
|
when:
|
||||||
|
- splunk_enable_service
|
||||||
|
- ansible_system is match("Linux")
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ privileged_user }}"
|
||||||
|
|
||||||
|
- name: "Restart the splunkd service - Via windows system"
|
||||||
|
win_service:
|
||||||
|
name: splunkd
|
||||||
|
state: restarted
|
||||||
|
when: splunk_enable_service and not ansible_system is match("Linux")
|
||||||
|
|
||||||
|
- name: "Wait for splunkd management port"
|
||||||
|
wait_for:
|
||||||
|
port: "{{ splunk_svc_port }}"
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
- name: Get DMC Name
|
||||||
|
set_fact:
|
||||||
|
dmc_name: "{{ hostvars[groups.splunk_monitoring_console[0]].inventory_hostname_short }}"
|
||||||
|
when: not splunk_single_instance
|
||||||
|
|
||||||
|
- name: "Ensure that {{ dest_path }} exists"
|
||||||
|
file:
|
||||||
|
path: "{{ splunk_home }}/etc/{{ dest_path | dirname }}"
|
||||||
|
state: directory
|
||||||
|
recurse: yes
|
||||||
|
group: "{{ splunk_group }}"
|
||||||
|
owner: "{{ splunk_user }}"
|
||||||
|
ignore_errors: true
|
||||||
|
vars:
|
||||||
|
dest_path: "auth/distServerKeys/{{ dmc_name }}/"
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ splunk_user }}"
|
||||||
|
when: not splunk_single_instance
|
||||||
|
|
||||||
|
- name: Copy trusted.pem to server
|
||||||
|
copy:
|
||||||
|
src: "/tmp/trusted.pem"
|
||||||
|
dest: "{{ splunk_home }}/etc/auth/distServerKeys/{{ dmc_name }}/trusted.pem"
|
||||||
|
group: "{{ splunk_group }}"
|
||||||
|
owner: "{{ splunk_user }}"
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ splunk_user }}"
|
||||||
|
when: not splunk_single_instance
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
- name: Default files added to the list
|
||||||
|
set_fact:
|
||||||
|
app_configs:
|
||||||
|
- template_path: "{{ playbook_dir }}/common/templates/app.j2"
|
||||||
|
template_output_path: "app.conf"
|
||||||
|
|
||||||
|
- name: Ensure that all local paths exists
|
||||||
|
file:
|
||||||
|
path: "{{ playbook_dir }}/splunk_apps/base_apps/{{ app_name }}/local"
|
||||||
|
state: directory
|
||||||
|
recurse: yes
|
||||||
|
force: true
|
||||||
|
ignore_errors: true
|
||||||
|
loop: "{{ configs|flatten + app_configs | flatten }}"
|
||||||
|
|
||||||
|
- name: Apply provided template.j2 on the provided target file
|
||||||
|
template:
|
||||||
|
src: "{{ item.template_path }}"
|
||||||
|
dest: "{{ playbook_dir }}/splunk_apps/base_apps/{{ app_name }}/local/{{ item.template_output_path }}"
|
||||||
|
force: true
|
||||||
|
loop: "{{ configs|flatten + app_configs | flatten }}"
|
||||||
|
|
||||||
|
- name: Ensure that all custom paths exists
|
||||||
|
file:
|
||||||
|
path: "{{ playbook_dir }}/splunk_apps/base_apps/{{ app_name }}/{{ item.dest_dir }}"
|
||||||
|
state: directory
|
||||||
|
recurse: yes
|
||||||
|
force: true
|
||||||
|
ignore_errors: true
|
||||||
|
loop: "{{ files |flatten }}"
|
||||||
|
when: files is defined
|
||||||
|
|
||||||
|
- name: Copy specific files to their local dir
|
||||||
|
copy:
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "{{ playbook_dir }}/splunk_apps/base_apps/{{ app_name }}/{{ item.dest_dir }}"
|
||||||
|
force: true
|
||||||
|
loop: "{{ files |flatten }}"
|
||||||
|
when: files is defined
|
||||||
|
|
||||||
|
- name: Copy app to the different Splunk Topology
|
||||||
|
copy:
|
||||||
|
src: "{{ playbook_dir }}/splunk_apps/base_apps/{{ app_name }}"
|
||||||
|
dest: "{{ playbook_dir }}/splunk_apps/{{ item }}/"
|
||||||
|
force: yes
|
||||||
|
loop: "{{ splunk_target_topology }}"
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
- name: "disable dmc on client instances"
|
||||||
|
ini_file:
|
||||||
|
dest: "{{ splunk_home }}/etc/apps/splunk_monitoring_console/local/app.conf"
|
||||||
|
section: install
|
||||||
|
option: "state"
|
||||||
|
value: "disabled"
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ splunk_user }}"
|
||||||
|
when: "{{ groups.splunk_monitoring_console | length |int }} >= 1"
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
- name: "Test basic https endpoint"
|
||||||
|
uri:
|
||||||
|
url: "https://127.0.0.1:{{ splunk_svc_port }}/services/properties"
|
||||||
|
method: GET
|
||||||
|
user: "{{ splunk_admin_user }}"
|
||||||
|
password: "{{ splunk_password }}"
|
||||||
|
validate_certs: false
|
||||||
|
status_code: 200,404
|
||||||
|
timeout: 10
|
||||||
|
register: ssl_enabled
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
# If the https call failed, we will revert to http and continue REST with normal error handling
|
||||||
|
- name: "Set url prefix for future REST calls"
|
||||||
|
set_fact:
|
||||||
|
cert_prefix: "{% if ssl_enabled.status == 200 %}https{% else %}http{% endif %}"
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
- name: Create {{ conf_directory }} directory if not existing
|
||||||
|
file:
|
||||||
|
path: "{{ conf_directory }}"
|
||||||
|
state: directory
|
||||||
|
when: conf_directory is defined
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ splunk_user }}"
|
||||||
|
|
||||||
|
- name: Create {{ conf_file }} if not existing
|
||||||
|
copy:
|
||||||
|
dest: "{{ conf_directory }}/{{ conf_file }}"
|
||||||
|
mode: u=rw,g=,o=
|
||||||
|
owner: "{{ splunk_user }}"
|
||||||
|
group: "{{ splunk_group }}"
|
||||||
|
content: ""
|
||||||
|
force: no
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ privileged_user }}"
|
||||||
|
|
||||||
|
- name: "Set options in {{ stanza_name }}"
|
||||||
|
ini_file:
|
||||||
|
path: "{{ conf_directory }}/{{ conf_file }}"
|
||||||
|
section: "{{ stanza_name }}"
|
||||||
|
option: "{{ stanza_setting.key }}"
|
||||||
|
value: "{{ stanza_setting.value }}"
|
||||||
|
allow_no_value: True
|
||||||
|
state: present
|
||||||
|
with_dict: "{{ conf_stanzas }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: stanza_setting
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ splunk_user }}"
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
- name: Check Splunk instance is running
|
||||||
|
uri:
|
||||||
|
url: "{{ cert_prefix }}://{{ inventory_hostname }}:{{ splunk_svc_port }}/services/server/info?output_mode=json"
|
||||||
|
method: GET
|
||||||
|
user: "{{ splunk_admin_user }}"
|
||||||
|
password: "{{ splunk_password }}"
|
||||||
|
validate_certs: false
|
||||||
|
register: task_response
|
||||||
|
until:
|
||||||
|
- task_response.status == 200
|
||||||
|
- lookup('pipe', 'date +"%s"')|int - task_response.json.entry[0].content.startup_time > 10
|
||||||
|
retries: "{{ retry_num }}"
|
||||||
|
delay: 3
|
||||||
|
ignore_errors: true
|
||||||
|
no_log: "{{ hide_password }}"
|
||||||
|
|
||||||
|
- name: Print response
|
||||||
|
debug:
|
||||||
|
var: task_response
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
[launcher]
|
||||||
|
author = {{ author }} via Ansible (OBS)
|
||||||
|
description = {{ app_desc }}
|
||||||
|
version = {{ ansible_script_version }}
|
||||||
|
|
||||||
|
[package]
|
||||||
|
id = {{ app_name }}
|
||||||
|
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
is_visible = false
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
[clustering]
|
||||||
|
available_sites = {{ splunk_all_sites }}
|
||||||
|
cluster_label = {{ splunk_idxcluster_label }}
|
||||||
|
mode = master
|
||||||
|
multisite = {{ splunk_multisite }}
|
||||||
|
replication_factor = {{ splunk_replication_factor }}
|
||||||
|
search_factor = {{ splunk_search_factor }}
|
||||||
|
site_replication_factor = origin:{{ splunk_multisite_replication_factor_origin }}, total:{{ splunk_multisite_replication_factor_total }}
|
||||||
|
site_search_factor = origin:{{ splunk_multisite_search_factor_origin }}, total:{{ splunk_multisite_search_factor_total }}
|
||||||
|
summary_replication = true
|
||||||
|
|
||||||
|
[general]
|
||||||
|
site = {{ splunk_site }}
|
||||||
|
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
[shclustering]
|
||||||
|
shcluster_label = {{ splunk_shcluster_label }}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
[deployment-client]
|
||||||
|
{% if splunk_enableSSL %}
|
||||||
|
sslVersions = tls1.2
|
||||||
|
sslVerifyServerCert = true
|
||||||
|
sslCommonNameToCheck = {% for host in groups.splunk_deployment_server %} {{ host }}, {% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[target-broker:deploymentServer]
|
||||||
|
# Change the targetUri
|
||||||
|
targetUri = {{ groups.splunk_deployment_server[0] }}:{{ splunk_svc_port }}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
[distributedSearch]
|
||||||
|
servers = {% if sh_list is not none %} {% for host in sh_list %} https://{{ host }}:{{ splunk_svc_port }}, {% endfor %} {%endif %}{% if lm_list is not none %} ,{% for host in lm_list %} https://{{ host }}:{{ splunk_svc_port }}, {% endfor %}{%endif %}{% if cm_list is not none %} ,{% for host in cm_list %} https://{{ host }}:{{ splunk_svc_port }}, {% endfor %}{%endif %}{% if ds_list is not none %} ,{% for host in ds_list %} https://{{ host }}:{{ splunk_svc_port }}, {% endfor %}{%endif %}{% if deployer_list is not none %} ,{% for host in deployer_list %} https://{{ host }}:{{ splunk_svc_port }}, {% endfor %}{%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_cluster_master]
|
||||||
|
servers={% if cm_list is not none %} {% for host in cm_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %} {% else %} localhost:localhost {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_deployment_server]
|
||||||
|
servers={% if ds_list is not none %} {% for host in ds_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_indexer]
|
||||||
|
default = true
|
||||||
|
servers={% if indexer_list is not none %} {% for host in indexer_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %} {% else %} localhost:localhost {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_kv_store]
|
||||||
|
servers={% if sh_list is not none %} {% for host in sh_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_license_master]
|
||||||
|
servers={% if lm_list is not none %} {% for host in lm_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_search_head]
|
||||||
|
servers={% if cm_list is not none %}{% for host in cm_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}{% if sh_list is not none %},{% for host in sh_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %} {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_group_shc_deployer]
|
||||||
|
servers={% if deployer_list is not none %} {% for host in deployer_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_indexerclustergroup_{{ splunk_idxcluster_label }}]
|
||||||
|
servers={% if cm_list is not none %}{% for host in cm_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}{% if indexer_list is not none %},{% for host in indexer_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %} {%endif %}{% if sh_list is not none %},{% for host in sh_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %} {%endif %}
|
||||||
|
|
||||||
|
[distributedSearch:dmc_searchheadclustergroup_{{ splunk_shcluster_label }}]
|
||||||
|
servers={% if sh_list is not none %}{% for host in sh_list %} {{ host }}:{{ splunk_svc_port }}, {% endfor %}{% else %} localhost:localhost {%endif %}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
{% if splunk_enableSSL %}
|
||||||
|
[splunktcp-ssl:{{ splunk_s2s_port }}]
|
||||||
|
connection_host = ip
|
||||||
|
|
||||||
|
[SSL]
|
||||||
|
serverCert = $SPLUNK_HOME/etc/auth/servercertificate.pem
|
||||||
|
sslPassword = {{ splunk_ssl_cert_password }}
|
||||||
|
requireClientCert = false
|
||||||
|
sslVersions = tls1.2
|
||||||
|
{% else %}
|
||||||
|
[splunktcp://{{ splunk_s2s_port }}]
|
||||||
|
{% endif %}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
# BASE SETTINGS
|
||||||
|
|
||||||
|
[tcpout]
|
||||||
|
# Change here to specify the indexer group
|
||||||
|
defaultGroup = all_{{ splunk_app_prefix }}_indexer
|
||||||
|
forceTimebasedAutoLB = true
|
||||||
|
maxQueueSize = 7MB
|
||||||
|
useACK = true
|
||||||
|
|
||||||
|
[tcpout:all_{{ splunk_app_prefix }}_indexer]
|
||||||
|
{% if splunk_enableSSL %}
|
||||||
|
clientCert = $SPLUNK_HOME/etc/auth/servercertificate.pem
|
||||||
|
{% endif %}
|
||||||
|
server = {% for host in indexer_list %}{{ host }}:{{ splunk_s2s_port }}, {% endfor %}
|
||||||
|
{% if splunk_enableSSL %}
|
||||||
|
sslCommonNameToCheck = {% for host in groups.all_splunk_instances %}{{ host }}, {% endfor %}
|
||||||
|
sslPassword = {{ splunk_ssl_cert_password }}
|
||||||
|
sslVerifyServerCert = true
|
||||||
|
{% endif %}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
# BASE SETTINGS
|
||||||
|
|
||||||
|
[tcpout]
|
||||||
|
# Change here to specify the indexer group
|
||||||
|
defaultGroup = all_{{ splunk_app_prefix }}_indexer
|
||||||
|
forceTimebasedAutoLB = true
|
||||||
|
maxQueueSize = 7MB
|
||||||
|
useACK = true
|
||||||
|
|
||||||
|
[tcpout:all_{{ splunk_app_prefix }}_indexer]
|
||||||
|
{% if splunk_enableSSL %}
|
||||||
|
clientCert = $SPLUNK_HOME/etc/apps/{{ app_name }}/{{ custom_cert_path }}
|
||||||
|
{% endif %}
|
||||||
|
server = {% for host in indexer_list %}{{ host }}:{{ splunk_s2s_port }}, {% endfor %}
|
||||||
|
{% if splunk_enableSSL %}
|
||||||
|
sslCommonNameToCheck = {% for host in indexer_list %}{{ host }}, {% endfor %}
|
||||||
|
sslPassword = {{ splunk_ssl_cert_password }}
|
||||||
|
sslVerifyServerCert = true
|
||||||
|
{% endif %}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
# performance optimisation
|
||||||
|
[default]
|
||||||
|
journalCompression = zstd
|
||||||
|
tsidxWritingLevel = 4
|
||||||
|
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
# kvstore not needed on indexers, let's disable it
|
||||||
|
# even when distributing collection via bundle, it won't be used on indexer as this use lookups in the background
|
||||||
|
|
||||||
|
[kvstore]
|
||||||
|
disabled = true
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
# In larger environments, where there are more than, say, three indexers,
|
||||||
|
# it's common to disable the Splunk UI. This helps avoid configuration issues
|
||||||
|
# caused by logging in to the UI to do something directly via the manager,
|
||||||
|
# as well as saving some system resources.
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
startwebserver = 0
|
||||||
|
# avoid timeout when indexer loaded
|
||||||
|
splunkdConnectionTimeout = 120
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
# clustering parameters are local and moved in a cluster specific package
|
||||||
|
# this can be a site specific if only one site per cluster
|
||||||
|
|
||||||
|
[clustering]
|
||||||
|
master_uri = https://{{ groups.splunk_cluster_master[0] }}:{{ splunk_svc_port }}
|
||||||
|
mode = slave
|
||||||
|
|
||||||
|
[replication_port://{{ splunk_replication_port }}]
|
||||||
|
disabled = false
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
# This app is expected to be layered on top of org_cluster_indexer_base;
|
||||||
|
# the settings there establish the general relationship with the master and
|
||||||
|
# set up clustered indexing behavior. This is another layer to provide the
|
||||||
|
# site number of the host, and to indicate that the clustering should be of
|
||||||
|
# the multi-site variety.
|
||||||
|
|
||||||
|
# *** This app cannot be shipped via the master-apps mechanism; it would
|
||||||
|
# make all sites the same. Place it in etc/apps on the affected indexer. ***
|
||||||
|
|
||||||
|
[general]
|
||||||
|
site = {{ splunk_site }}
|
||||||
|
|
||||||
|
[clustering]
|
||||||
|
multisite = {{ splunk_multisite }}
|
||||||
|
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
# In distributed environments, it's common to have a lone search head acting
|
||||||
|
# as the license master as well. In this configuration, providing the URI
|
||||||
|
# of the license master is easiest within the indexer_base configuration.
|
||||||
|
# In the event that there are multiple search heads, you could instead use
|
||||||
|
# the org_all_license app, shipped to the non-license SH, as well as all of
|
||||||
|
# the indexers. In either event, the settings are the same.
|
||||||
|
|
||||||
|
[license]
|
||||||
|
master_uri = https://{{ groups.splunk_license_master[0] }}:{{ splunk_svc_port }}
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
[sslConfig]
|
||||||
|
sslRootCAPath = $SPLUNK_HOME/etc/auth/ca-cert.pem
|
||||||
|
enableSplunkdSSL = true
|
||||||
|
sslVersions = tls1.2
|
||||||
|
serverCert = $SPLUNK_HOME/etc/auth/servercertificate.pem
|
||||||
|
# servercertificate.pem is a symlink to the real cert.pem on the instance
|
||||||
|
|
||||||
|
sslPassword = {{ splunk_ssl_cert_password }}
|
||||||
|
requireClientCert = false
|
||||||
|
|
||||||
|
sslVerifyServerCert = true
|
||||||
|
sslCommonNameToCheck = {% for host in groups.all_splunk_instances %}{{ host }}, {% endfor %}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
[clustering]
|
||||||
|
master_uri = https://{{ groups.splunk_cluster_master[0] }}:{{ splunk_svc_port }}
|
||||||
|
mode = searchhead
|
||||||
|
multisite = {{ splunk_multisite }}
|
||||||
|
|
||||||
|
[general]
|
||||||
|
site = {{ splunk_site }}
|
||||||
|
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
[replication_port://{{ splunk_shcluster_replication_port }}]
|
||||||
|
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
[sslConfig]
|
||||||
|
enableSplunkdSSL = true
|
||||||
|
requireClientCert = false
|
||||||
|
sslPassword = {{ splunk_ssl_cert_password }}
|
||||||
|
sslRootCAPath = $SPLUNK_HOME/etc/apps/{{ splunk_app_prefix }}_uf_ssl/certs/ca-cert.pem
|
||||||
|
serverCert = $SPLUNK_HOME/etc/apps/{{ splunk_app_prefix }}_uf_ssl/certs/splunk_universal_forwarder-cert-concatenated.pem
|
||||||
|
sslVersions = tls1.2
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
[settings]
|
||||||
|
enableSplunkWebSSL = true
|
||||||
|
privKeyPath = $SPLUNK_HOME/etc/auth/web-nopwd-key.pem
|
||||||
|
serverCert = $SPLUNK_HOME/etc/auth/web-servercertificate.pem
|
||||||
|
sslVersions = tls1.2
|
||||||
Loading…
Reference in new issue