<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How are you keeping up with Check Point VPN/SIC Certificates in General Topics</title>
    <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258745#M43728</link>
    <description>&lt;P&gt;Yep. &amp;nbsp;Here's what I did:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;# I use Nagios
. /usr/lib/nagios/plugins/utils.sh


check_ike_certs() {
  cert_block=""
  cert_host=""
  cert_time=""
  cert_host_regex="^Subject = CN=(.*) VPN Certificate"
  cert_time_regex="Not_After: (.*)"
  declare -A cert_list  # associative array of "cert_host = cert_time"
  declare -a cert_host_list  # to hold sorted list of cert hosts

  while read cert_block; do
    if [[ ${cert_block} =~ ^$ ]]; then
      if [ -n "${cert_host}" -a -n "${cert_time}" ]; then
        cert_list[${cert_host}]="${cert_time}"
      fi

      cert_block=""
      cert_host=""
      cert_time=""
    else
      if [[ ${cert_block} =~ ${cert_host_regex} ]]; then
        cert_host=${BASH_REMATCH[1]}
      elif [[ ${cert_block} =~ ${cert_time_regex} ]]; then
        cert_time=${BASH_REMATCH[1]}
      else
        continue
      fi
    fi
  done &amp;lt;&amp;lt;&amp;lt;$(cpca_client lscert -stat Valid -kind IKE;echo " "; echo) #Add artificial blank line as EOF for the while loop

  # sort the associate array keys to a natural list
  read -a cert_host_list &amp;lt;&amp;lt;&amp;lt;$( for c_host in "${!cert_list[@]}"; do
    echo $c_host
  done |sort -f |xargs)

  for c_host in "${cert_host_list[@]}"; do
    check_cert_time $c_host "${cert_list[$c_host]}"
  done

  # check exit status against bitwise code and exit accordingly
  if (( ${exitstatus} )); then
    echo "${status_msg} | ${perf_msg}"

    if (( ${exitstatus} &amp;amp; 4 )); then
      exitstatus="UNKNOWN"
    elif (( ${exitstatus} &amp;amp; 2 )); then
      exitstatus="CRITICAL"
    elif (( ${exitstatus} &amp;amp; 1 )); then
      exitstatus="WARNING"
    fi
  else
    echo "IKE certificates are OK | ${perf_msg}"
    exitstatus="OK"
  fi

}

# deal with $exitstatus however you want.
&lt;/LI-CODE&gt;</description>
    <pubDate>Wed, 01 Oct 2025 19:31:22 GMT</pubDate>
    <dc:creator>Duane_Toler</dc:creator>
    <dc:date>2025-10-01T19:31:22Z</dc:date>
    <item>
      <title>How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258715#M43716</link>
      <description>&lt;P&gt;Our process is very manual and we've missed some recently with VPN certificates being renewed. How are others tracking and renewing Check Point VPN/SIC certificates?&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 15:27:23 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258715#M43716</guid>
      <dc:creator>Heath</dc:creator>
      <dc:date>2025-10-01T15:27:23Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258717#M43718</link>
      <description>&lt;P&gt;I've never tracked SIC certs.&amp;nbsp;They should renew on their own.&lt;/P&gt;
&lt;P&gt;VPN certs should too, but I keep getting alerts about VPN cert expiration on firewalls which have never even had the VPN feature enabled. Not sure how best to deal with those.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 15:45:02 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258717#M43718</guid>
      <dc:creator>Bob_Zimmerman</dc:creator>
      <dc:date>2025-10-01T15:45:02Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258718#M43719</link>
      <description>&lt;P&gt;We did find in the documentation where the SIC certs renew at 75% validity. The problem we have is I guess you have to push policy for that to take upon the auto-renewal. We have remote static un-manned sites where the firewalls are pretty much set it and forget it. So we've had issues in the past and try to track those just to make sure it doesn't happen. Of course, all manual.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 15:52:15 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258718#M43719</guid>
      <dc:creator>Heath</dc:creator>
      <dc:date>2025-10-01T15:52:15Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258719#M43720</link>
      <description>&lt;P&gt;I have not found a good way, but the current method I use is:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;After upgrading SMS - policy push all gateways&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;I upgrade frequently enough that I generally catch all the certificate warnings in the policy push.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 16:13:07 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258719#M43720</guid>
      <dc:creator>CaseyB</dc:creator>
      <dc:date>2025-10-01T16:13:07Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258722#M43721</link>
      <description>&lt;P&gt;My team has scripted pushes of basically every policy to the corresponding firewall. The idea is we don't want some change lurking for months to bite us just as we need to push policy to deal with some emergency.&lt;/P&gt;
&lt;P&gt;It should be possible to script something with 'cpca_client lscert -kind SIC -stat Valid'. Dealing with the multi-line output would probably be the most irritating part.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 16:42:16 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258722#M43721</guid>
      <dc:creator>Bob_Zimmerman</dc:creator>
      <dc:date>2025-10-01T16:42:16Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258743#M43727</link>
      <description>&lt;P&gt;Unless I missed something, VPN certs don't auto-renew. On systems without VPN this is done by enabling IPSEC VPN, renew it, then disabling the blade, publish and install, on systems which care about them this is done by renewing it manually in the blade section as well.&lt;/P&gt;
&lt;P&gt;There's an SK about this, also referencing another relatively recent tool to renew:&amp;nbsp;&lt;A href="https://support.checkpoint.com/results/sk/sk178304" target="_blank"&gt;https://support.checkpoint.com/results/sk/sk178304&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;As there's no apparent added value to keep an expired certificate, I agree they should renew themselves by default and be distributed by the management station.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 18:31:09 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258743#M43727</guid>
      <dc:creator>Alex-</dc:creator>
      <dc:date>2025-10-01T18:31:09Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258745#M43728</link>
      <description>&lt;P&gt;Yep. &amp;nbsp;Here's what I did:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;# I use Nagios
. /usr/lib/nagios/plugins/utils.sh


check_ike_certs() {
  cert_block=""
  cert_host=""
  cert_time=""
  cert_host_regex="^Subject = CN=(.*) VPN Certificate"
  cert_time_regex="Not_After: (.*)"
  declare -A cert_list  # associative array of "cert_host = cert_time"
  declare -a cert_host_list  # to hold sorted list of cert hosts

  while read cert_block; do
    if [[ ${cert_block} =~ ^$ ]]; then
      if [ -n "${cert_host}" -a -n "${cert_time}" ]; then
        cert_list[${cert_host}]="${cert_time}"
      fi

      cert_block=""
      cert_host=""
      cert_time=""
    else
      if [[ ${cert_block} =~ ${cert_host_regex} ]]; then
        cert_host=${BASH_REMATCH[1]}
      elif [[ ${cert_block} =~ ${cert_time_regex} ]]; then
        cert_time=${BASH_REMATCH[1]}
      else
        continue
      fi
    fi
  done &amp;lt;&amp;lt;&amp;lt;$(cpca_client lscert -stat Valid -kind IKE;echo " "; echo) #Add artificial blank line as EOF for the while loop

  # sort the associate array keys to a natural list
  read -a cert_host_list &amp;lt;&amp;lt;&amp;lt;$( for c_host in "${!cert_list[@]}"; do
    echo $c_host
  done |sort -f |xargs)

  for c_host in "${cert_host_list[@]}"; do
    check_cert_time $c_host "${cert_list[$c_host]}"
  done

  # check exit status against bitwise code and exit accordingly
  if (( ${exitstatus} )); then
    echo "${status_msg} | ${perf_msg}"

    if (( ${exitstatus} &amp;amp; 4 )); then
      exitstatus="UNKNOWN"
    elif (( ${exitstatus} &amp;amp; 2 )); then
      exitstatus="CRITICAL"
    elif (( ${exitstatus} &amp;amp; 1 )); then
      exitstatus="WARNING"
    fi
  else
    echo "IKE certificates are OK | ${perf_msg}"
    exitstatus="OK"
  fi

}

# deal with $exitstatus however you want.
&lt;/LI-CODE&gt;</description>
      <pubDate>Wed, 01 Oct 2025 19:31:22 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258745#M43728</guid>
      <dc:creator>Duane_Toler</dc:creator>
      <dc:date>2025-10-01T19:31:22Z</dc:date>
    </item>
    <item>
      <title>Re: How are you keeping up with Check Point VPN/SIC Certificates</title>
      <link>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258752#M43732</link>
      <description>&lt;P&gt;You probably need that check_cert_time() function, too:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;check_cert_time() {
  local cert_host=$1
  local cert_time=$2

  #echo "--${cert_host}--, --${cert_time}--"
  cert_tm=$(date +"%s" -d "${cert_time}" 2&amp;gt;/dev/null)

  if (( $? )); then
    exitstatus=${STATE_UNKNOWN}
    status_msg="Error processing certificate status (cert_host: ${cert_host})"

    echo ${status_msg}
    exit ${exitstatus}
  fi

  #echo "date now: ${DATE_NOW}"
  cert_days=$(( (${cert_tm} - ${DATE_NOW}) / 86400 ))

  #echo "cert_days: ${cert_days}"
  #echo "warn: ${WARN_LEV}, crit: ${CRIT_LEV}"

  if (( ${cert_days} &amp;gt; ${WARN_LEV} )); then
    status_msg=${status_msg:+${status_msg}"&amp;lt;br&amp;gt;"}"${cert_host} is OK"
    exitstatus=$(( exitstatus | ${STATE_OK} ))
  elif (( ${cert_days} &amp;gt; ${CRIT_LEV} )); then
    status_msg=${status_msg:+${status_msg}"&amp;lt;br&amp;gt;"}"${cert_host} is WARNING"
    exitstatus=$(( exitstatus | ${STATE_WARNING} ))
  elif (( ${cert_days} &amp;lt;= ${CRIT_LEV} )); then ## &amp;amp;&amp;amp; ${cert_days} &amp;gt;= 0 )); then
    status_msg=${status_msg:+${status_msg}"&amp;lt;br&amp;gt;"}"${cert_host} is CRITICAL"
    exitstatus=$(( exitstatus | ${STATE_CRITICAL} ))
  else  ## Never will reach here, i know
    status_msg=${status_msg:+${status_msg}"&amp;lt;br&amp;gt;"}"${cert_host} is UNKNOWN"
    exitstatus=$(( exitstatus | 4 ))
  fi

  perf_msg=${perf_msg:+${perf_msg}"&amp;lt;br&amp;gt;"}"${cert_host}: ${cert_days}"

  #echo "${status_msg} | ${perf_msg}"
  #echo "status: ${exitstatus}"
}
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The status and perfdata message variables are just to feed info back into Nagios. &amp;nbsp;Do with these what you want ...or not.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Oct 2025 21:47:14 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/How-are-you-keeping-up-with-Check-Point-VPN-SIC-Certificates/m-p/258752#M43732</guid>
      <dc:creator>Duane_Toler</dc:creator>
      <dc:date>2025-10-01T21:47:14Z</dc:date>
    </item>
  </channel>
</rss>

