脚本实现SSL证书到期监控示例

目录
  • 1)准备工作
  • 2)编写脚本
  • 3)手动验证
  • 4)配置到 CronJob 中

1)准备工作

创建一个企业微信账号,并创建一个组,在组里面配置企业微信提供的机器人。将机器人提供的 WebHook 地址保存。

2)编写脚本

[root@Nginx ~]# bash ssl-monitor.sh
[root@Nginx ~]# cat ssl-monitor.sh
#!/bin/bash
# 定义网站域名和端口号信息
WebName="www.baidu.com"
Port="443"
# 通过 Openssl 工具获取到当前证书的到期时间
Cert_END_Time=$(echo | openssl s_client -servername ${WebName} -connect ${WebName}:${Port} 2> /dev/null | openssl x509 -noout -dates | grep 'After' | awk -F '=' '{print $2}' | awk '{print $1,$2,$4}')
# 将证书的到期时间转化成时间戳
Cert_NED_TimeStamp=$(date +%s -d "$Cert_END_Time")
# 定义当前时间的时间戳
Create_TimeStamp=$(date +%s)
# 通过计算获取到证书的剩余天数
Rest_Time=$(expr $(expr $Cert_NED_TimeStamp - $Create_TimeStamp) / 86400)
# 配置告警提示信息
echo "$WebName  网站的 SSL 证书还有 $Rest_Time 天后到期" > ssl-monitor.txt
# 判断出证书时间小于 30 天的
if [ $Rest_Time -lt 30 ];then
# 定义企业微信机器人的 API 接口
WebHook='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=2743320b-0a2c-404b-87bc-25fedf1ff67a'
# 通过 Curl 命令来发送 Post 请求
curl "${WebHook}" -H 'Content-Type: application/json' -d '
{
    "msgtype": "text",
    "text": {
        "content": "'"$(cat ssl-monitor.txt)"'"
    }
}' &> /dev/null
fi

因为我们上面有配置条件判断,所以在验证的时,我们可以先将条件判断删除。

3)手动验证

[root@Nginx ~]# bash ssl-monitor.sh

4)配置到 CronJob 中

[root@Nginx ~]# crontab -e
* 23 * * * /bin/bash /root/ssl-monitor.sh

到此这篇关于脚本实现SSL证书到期监控示例的文章就介绍到这了,更多相关SSL证书到期监控脚本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决docker的tls(ssl)证书过期问题

    问题现象: [root@localhost ~]# docker image pull xxx.com.cn/centos7 Using default tag: latest Error response from daemon: Get https://xxx.com.cn/v1/_ping: x509: certificate has expired or is not yet valid 可能的原因分析: linux使用查看date查看当前时间,与证书的有效时间作比对,得出具体的原因,可

  • Shell脚本实现生成SSL自签署证书

    启用 apache 的 mod_ssl 之后需要有证书才能正常运作.写了个脚本来操作.首先要确定机器上已经有 openssl . 复制代码 代码如下: #!/bin/sh # # ssl 证书输出的根目录. sslOutputRoot="/etc/apache_ssl" if [ $# -eq 1 ]; then  sslOutputRoot=$1 fi if [ ! -d ${sslOutputRoot} ]; then  mkdir -p ${sslOutputRoot} fi c

  • shell脚本检查域名证书是否过期的流程分析

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的.(一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下提示,这时候如果还是要访问只能通过点击"高级",忽略风险继续访问) 我们这里有些域名是直接解析到自己的业务机器上的,并没有经过运维管理的nginx再来做转发,所以针对这部分域名,就需要的单独到业务机器上下载最新的域名证书,然后替换了一下证书,并重启一下nginx (nginx -s relo

  • 脚本实现SSL证书到期监控示例

    目录 1)准备工作 2)编写脚本 3)手动验证 4)配置到 CronJob 中 1)准备工作 创建一个企业微信账号,并创建一个组,在组里面配置企业微信提供的机器人.将机器人提供的 WebHook 地址保存. 2)编写脚本 [root@Nginx ~]# bash ssl-monitor.sh [root@Nginx ~]# cat ssl-monitor.sh #!/bin/bash # 定义网站域名和端口号信息 WebName="www.baidu.com" Port="4

  • 基于python检查SSL证书到期情况代码实例

    结合邮件告警和页面展示,再多的域名证书到期情况即可立马知道 代码示例: # coding: utf-8 # 查询域名证书到期情况 import re import time import subprocess from datetime import datetime from io import StringIO def main(domain): f = StringIO() comm = f"curl -Ivs https://{domain} --connect-timeout 10&q

  • Nginx单IP地址配置多个SSL证书的方法示例

    默认情况下,Nginx一个IP地址仅支持一个SSL证书,需要多个IP地址才能配置多个SSL证书,在公网IP地址有限的情况下,可以使用TLS Server Name Indication extension(SNI, RFC 6066),它允许浏览器在SSL握手的时候发送请求的server name,也就是 Host,这样 Nginx 就能找到对应server 的SSL配置. 配置步骤如下: 1.检查Nginx是否支持TLS $ nginx -V ... TLS SNI support enabl

  • PHP查看SSL证书信息的方法

    前言 SSL证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能.以下是通过PHP查看SSL证书信息的示例,有需要的可以看看. 示例代码 <? $str = file_get_contents('2.cer'); print_r(openssl_x509_parse($str)); ?> 注意:证书需要使用base64编码的方式cer证书. 总结 以上就是这篇文章的全部内容,希望对大家的学习或者工作能有一定的帮助,如果疑问大家可

  • nginx配置ssl证书实现https访问的示例

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的域名点"解析",进入解析页面后选择[添加解析]按钮会弹出如下页面: 主机记录这里选择@,记录值就是服务器ip地址,确认. 三,申请ca证书 在阿里云控制台-产品与服务-安全(云盾)-CA证书服务(数据安全),点击购买证书, 选择"免费版DV SSL",点击立即购买: 然

  • 使用acme.sh注册免费的ssl证书

    先决条件:首先我们需要有一个域名和一台有公网IP的服务器 安装acme.sh curl  https://get.acme.sh | sh 启用别名 source ~/.bashrc 说明: acme.sh 会安装到 ~/.acme.sh 目录下.安装成功后执行 source ~/.bashrc 以确保脚本所设置的命令别名生效. 说明:普通用户和 root 用户都可以安装使用. 安装过程进行了以下几步: 1.把 acme.sh 安装到你的 home 目录下: ~/.acme.sh/ ,并创建 一

  • windows下部署免费ssl证书(letsencrypt)的方法

    随着网络的发展,网络安全也越来越重要,对于网站来说,从Http升级到https也是我们要做的首要事情.要实现https,首先我们需要申请一张SSL证书,这篇文章我主要介绍下边这几个方面: 1. SSL简单介绍 2. 免费Letencrypt证书部署 3. 安装注意事项 一.SSL简单介绍 ssl作为一个网络加密协议,主要是存在于系统中应用层和传输层之间的一个安全套接字层(Secure Socket Layer),也就是位于TCP/IP协议和各个应用层协议之间,为应用数据传输提供加密的协议.当然它

  • PHP利用Socket获取网站的SSL证书与公钥

    通过 php curl 请求网页并不能获取到证书信息,此时需要使用 ssl socket 获取证书内容.下面来一起看看看详细的介绍: 示例代码: // 创建 stream context $context = stream_context_create([ 'ssl' => [ 'capture_peer_cert' => true, 'capture_peer_cert_chain' => true, ], ]); $resource = stream_socket_client(&q

  • Java如何跳过https的ssl证书验证详解

    打开我们首页,明显看到链接是https打头,https和http的通信协议差别,在于https安全性更高: http和https的差别 很明显,二者最大的区别在于https多了一个ssl证书验证,可以说https是身披SSL外壳的http.因为http存在如下缺陷: 1)通信使用明文,内容可能被窃听(重要密码泄露) 2)不验证通信方身份,有可能遭遇伪装(跨站点请求伪造) 3)无法证明报文的完整性,有可能已遭篡改(运营商劫持) 而https是利用SSL/TLS建立全信道,加密数据包.HTTPS使用

随机推荐