Setup F5 as a proxy for EDR Server/Cluster for communications outside a private network
The the F5 Configuration for Carbon Black Guide can be downloaded and followed from this article with some potential changes
when CLIENTSSL_HANDSHAKE {
if { [SSL::cert count] == 0 } {
log local0.info "Connection denied. Error: Client SSL handshake from [IP::client_addr] contains no client certificate."
reject
}
elseif { ![SSL::verify_result] == 0 } {
log local0.info "Connection denied. Error: Client SSL handshake from [IP::client_addr] failed certificate validation - [X509::verify_cert_error_string [SSL::verify_result]]."
reject
}
else {
session add ssl [SSL::sessionid] [SSL::cert 0]
log local0.info "Connection established. Info: Client SSL handshake accepted from [IP::client_addr]."
}
}
when HTTP_REQUEST {
if { [session lookup ssl [SSL::sessionid]] ne "" } {
HTTP::header remove X-Client-Cert-Id
HTTP::header remove X-Real-IP
HTTP::header insert X-Client-Cert-Id [X509::serial_number [session lookup ssl [SSL::sessionid]]]
HTTP::header insert X-Real-IP [IP::client_addr]
#log local0.info "HTTP request from [IP::client_addr]"
#log local0.info "X-Client-Cert-Id: [X509::serial_number [session lookup ssl [SSL::sessionid]]]"
#log local0.info "X-Real-IP: [IP::client_addr]"
#log local0.info "X-Forwarded-For: [HTTP::header X-Forwarded-For]"
}
}
3. Setup dual server profile in F5 (experimental / undocumented) to use both the temporary and primary server certs.
3.1. Import the new server certificate and key into F5.
3.2. Check the box “Default SSL Profile for SNI” on the existing “CarbonBlack_Client_SSL” profile in F5.
3.3. Create a new Client SSL Profile in F5 named like “CarbonBlackClientProfile”
a. Set the existing Client SSL Profile as the parent profile.
b. Updated the Certificate Key Chain to use the new certificate and key.
c. Set “edr.primary” for the “Server Name” value.
3.4. Attached both the old and the new Client SSL Profiles to the existing “CarbonBlack*” Carbon Black Virtual Server configuration.