You are currently viewing איך לעדכן תעודת SSL לדומיין וכל הסאבדומיינים שלו בסיפאנל

איך לעדכן תעודת SSL לדומיין וכל הסאבדומיינים שלו בסיפאנל

יש לכם דומיין ראשי – yourdomain.com – והמון סאבדומיינים שלו – sub1.yourdomain.com, sub2.yourdomain.com וכך הלאה. השרת שלכם הוא שרת סיפאנל ולכן יש לכם שתי אפשרויות בנויות לעדכון התעודה לכל הדומיינים:

  1. כניסה לחשבון סיפאנל של כל אחד מהסאב דומיינים והגדרת התעודה.
  2. כניסה ל WHM תחת Install an SSL Certificate on a domain והתקנת התעודה עבור כל אחד מהסאבדומיינים.

שתי השיטות עובדות טוב אבל אם יש לכם עשרות סאבדומיינים זו עבודת נמלים מסורבלת. יש דרך קצרה ומהירה יותר – להשתמש בסקריפט שעושה שימוש ב API של WHM כדי לעדכן את כל התעודות.

 

להלן הסקריפט הראשי:

#!/usr/local/cpanel/3rdparty/bin/perl

use strict;
use LWP::UserAgent;
use LWP::Protocol::https;
use MIME::Base64;
use IO::Socket::SSL;
use URI::Escape;

my $user = "root";
my $pass = "ENTER_PASSWORD";

my $auth = "Basic " . MIME::Base64::encode( $user . ":" . $pass );

my $ua = LWP::UserAgent->new(
    ssl_opts   => { verify_hostname => 0, SSL_verify_mode => 'SSL_VERIFY_NONE', SSL_use_cert => 0 },
);

my $dom = $ARGV[0];

my $certfile = "/root/domain_shared.crt";
my $keyfile = "/root/domain_shared.key";
my $cafile =  "/root/domain_shared.ca";

my $certdata;
my $keydata;
my $cadata;

open(my $certfh, '<', $certfile) or die "cannot open file $certfile";
    {
        local $/;
        $certdata = <$certfh>;
    }
    close($certfh);

open(my $keyfh, '<', $keyfile) or die "cannot open file $keyfile";
    {
        local $/;
        $keydata = <$keyfh>;
    }
    close($keyfh);

open(my $cafh, '<', $cafile) or die "cannot open file $cafile";
    {
        local $/;
        $cadata = <$cafh>;
    }
    close($cafh);

my $cert = uri_escape($certdata);
my $key = uri_escape($keydata);
my $ca = uri_escape($cadata);

my $request = HTTP::Request->new( POST => "https://127.0.0.1:2087/json-api/installssl?api.version=1&domain=$dom&crt=$cert&key=$key&cab=$ca" );
$request->header( Authorization => $auth );
my $response = $ua->request($request);
print $response->content;

צריך לעדכן בסקריפט את הסיסמא של root איפה שכתוב ENTER_PASSWORD. כמו כן צריך לעדכן את הנתיבים של התעודה, המפתח וה CA איפה שרשום domain_shared.
כמובן שיש לשים את התעודה, המפתח וה-CA בנתיב שהגדרתם בקובץ.

כדי להריץ את הסקריפט על כל הדומיינים שהתעודה עבורם בסיפאנל, יש להשתמש בתוספת סקריפט הבאה:

#!/bin/sh

for i in `cat /etc/userdomains |grep -v YOUR_DOMAIN|cut -f1 -d:`; do ./update_ssl.pl $i; done

יש לשנות את YOUR_DOMAIN בדומיין שלכם



בהצלחה

כתיבת תגובה