精华内容
下载资源
问答
  • Linux+SSL安装与配置

    2010-07-27 11:52:14
    基于LinuxSSL安装与配置详解.含有软件包下载地址说明.
  • Linux查看SSL证书是否过期

    千次阅读 2019-08-23 17:25:10
    使用OpenSSL工具,执行如下命令即可看到证书的有效起止时间。 openssl x509 -in <证书请求文件> -noout -dates

    使用OpenSSL工具,执行如下命令即可看到证书的有效起止时间。

    openssl x509 -in <证书请求文件> -noout -dates

    展开全文
  • Linux服务篇--SSL

    千次阅读 2019-04-08 10:23:45
    在hostA主机上查看公钥   gpg --list-keys 在hostA主机上导出公钥到wang.pubkey   gpg -a --export -o wang.pubkey 从hostA主机上复制公钥文件到需加密的B主机上   scp wang.pubkey hostB: 在需加密...

    本章概要

    • 安全机制
    • 对称和非对称加密
    • 散列算法
    • gpg
    • PKI和CA
    • openssl
    • 证书管理
    • ssh服务和dropbear
    • aide
    • Sudo
    • TCP Wrappers
    • PAM模块

    1、数据安全与加密算法

    1.1 数据加密

    安全机制

    • 信息安全防护的目标
      保密性 Confidentiality
      完整性 Integrity
      可用性 Usability
      可控制性 Controlability
      不可否认性 Non-repudiation
    • 安全防护环节
      物理安全:各种设备/主机、机房环境
      系统安全:主机或设备的操作系统
      应用安全:各种网络服务、应用程序
      网络安全:对网络访问的控制、防火墙规则
      数据安全:信息的备份与恢复、加密解密
      管理安全:各种保障性的规范、流程、方法

    关于数据安全

    • 安全攻击: STRIDE
      Spoofing 假冒
      Tampering 篡改
      Repudiation 否认
      Information Disclosure 信息泄漏
      Denial of Service 拒绝服务
      Elevation of Privilege 提升权限

    安全算法

    • 常用安全技术
        认证
        授权
        审计
        安全通信
    • 密码算法和协议
        对称加密
        公钥加密
        单向加密
        认证协议

    1.2 加密算法

    对称加密算法

    • 对称加密:加密和解密使用同一个密钥
        DES:Data Encryption Standard,56bits
        3DES:
        AES:Advanced (128, 192, 256bits)
        Blowfish,Twofish
        IDEA,RC6,CAST5
    • 特性:
        1、加密、解密使用同一个密钥,效率高
        2、将原始数据分割成固定大小的块,逐个进行加密
    • 缺陷:
        1、密钥过多:由于加密、解密使用同一密钥,因此与不同的人通信就需要一个密钥;
        2、密钥分发:密钥的安全传输无法解决;
        3、数据来源无法确认:一旦其他人得知加密方法,无法确认数据来源是否可信

    非对称加密算法

    • 公钥加密:密钥是成对出现
        公钥:公开给所有人;public key
        私钥:自己留存,必须保证其私密性;secret key
    • 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
    • 功能:
        数字签名:主要在于让接收方确认发送方身份
        对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
        数据加密:适合加密较小数据
    • 缺点:密钥长,加密解密效率低下
    • 算法:
        RSA(加密,数字签名)
        DSA(数字签名)
        ELGamal

    非对称加密详解

    • 基于一对公钥/密钥对
        用密钥对中的一个加密,另一个解密
    • 实现加密:
        接收者
         生成公钥/密钥对:Public和Secure(以下简称P和S)
         公开公钥P,保密密钥S
        发送者
         使用接收者的公钥来加密消息M
         将P(M)发送给接收者
        接收者
         使用密钥S来解密:M=S(P(M))
    • 实现数字签名:
        发送者
         生成公钥/密钥对:P和S
         公开公钥P,保密密钥S
         使用密钥S来加密消息M
         发送给接收者S(M)
        接收者
         使用发送者的公钥来解密M=P(S(M))
    • 结合签名和加密
    • 分离签名
    总结:
    数据传输无外乎两方面内容:1、数据的安全传输 2、数据的来源可靠
    假设A和B进行通信,A用B的公钥加密数据,该数据只能由B用自己的私钥机密,这就确定了数据的安全传输。
    而数据签名是A用自己的私钥加密数据,B如果能用A的公钥解密,即可确定数据来源为A,这就确保了数据来源的可信度。
    

    单项散列(哈希算法)

    • 将任意数据缩小成固定大小的“指纹”
        任意长度输入
        固定长度输出
        若修改数据,指纹也会改变(“不会产生冲突”)
        无法从指纹中重新生成数据(“单向”)
    • 功能:数据完整性
    • 常见算法
        md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512
    • 常用工具
        md5sum | sha1sum [ --check ] file
        openssl、gpg
        rpm -V

    2、数据加密命令gpg

    应用程序:RPM

    • 文件完整性的两种实施方式
    • 被安装的文件
        MD5单向散列
        rpm --verify package_name (or -V)
    • 发行的软件包文件
        GPG公钥签名
        rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
        rpm --checksig pakage_file_name (or -K)

    使用gpg实现对称加密

    • 对称加密file文件
        gpg -c file
        ls file.gpg
    • 在另一台主机上解密file
        gpg -o file -d file.gpg

    使用gpg工具实现公钥加密

    • 在hostB主机上用公钥加密,在hostA主机上解密
    • 在hostA主机上生成公钥/私钥对
        gpg --gen-key
    • 在hostA主机上查看公钥
        gpg --list-keys
    • 在hostA主机上导出公钥到wang.pubkey
        gpg -a --export -o wang.pubkey
    • 从hostA主机上复制公钥文件到需加密的B主机上
        scp wang.pubkey hostB:
    • 在需加密数据的hostB主机上生成公钥/私钥对
        gpg --list-keys
        gpg --gen-key
    • 在hostB主机上导入公钥
        gpg --import wang.pubkey
        gpg --list-keys
    • 用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg
        gpg -e -r wangxiaochun file
        -e 加密
        -r 指定接受信息的人
        file file.gpg
    • 复制加密文件到hostA主机
        scp fstab.gpg hostA:
    • 在hostA主机解密文件
        gpg -d file.gpg
        gpg -o file -d file.gpg
    • 删除公钥和私钥
        gpg --delete-keys wangxiaochun
        gpg --delete-secret-keys wangxiaochun

    3、PKI和CA

    3.1 为何需要PKI和CA

    中间人攻击流程
    client端向server端请求公钥,中间人截获该请求,向server端请求公钥
    server端把真公钥发送给CLIENT端,中间人截获真公钥,把自己的假公钥发送给client端
    client端使用假公钥加密数据发送给server端,中间人截获由假公钥加密的数据,用自己的私钥解密数据并篡改,再用真公钥加密把假的数据发送给server端
    server端使用真公钥加密加密数据再次发送给client端,中间人截获数据后进行篡改,然后使用自己的假公钥加密数据,发送给client端,而此时client端看到的数据则为中间人篡改后的数据
    这样,中间人就获取到了A和B通信的信息
    存在问题:此过程说明了公钥的传输仍然存在着漏洞
    解决方法:采用权威认证机构发布的CA认证证书传递公钥
    采用CA公钥传递过程
    A和B通讯,寻找可信的权威机构
    A把自己的公钥发送给CA,CA拥有自己的公钥和私钥,通过审核后,CA用自己的私钥对A的公钥做数字签名(除了数字签名还包括CA信息,A的信息、有效期),这些信息就是所谓的CA证书,CA把此证书颁发给A;
    此时,假设B已经获取CA的公钥信息,那么通过解密证书文件,即可获取A的公钥信息;以此类推,A通过CA证书获取B的公钥信息最权威的CA证书颁发机构根CA(顶层CA)有自己的公钥和私钥;子CA通过向根CA申请获取证书,在上述过程中,假设B获得CA公钥信息,此时A和B获取的CA公钥为根CA颁发的公钥,此公钥是必须可信的,因此确保了CA公钥的可信度
    在安装windows系统时,知名机构的公钥已经被安装在系统中,即获取了根CA的公钥,那么子CA颁发的证书也就确保了可信度

    CA和证书

    • PKI: Public Key Infrastructure
        签证机构:CA(Certificate Authority)
        注册机构:RA
        证书吊销列表:CRL
        证书存取库:
    • X.509:定义了证书的结构以及认证协议标准
        版本号
        序列号
        签名算法
        颁发者
        有效期限
        主体名称

    证书获取

    • 证书授权机构的证书
        服务器
        用户证书
    • 获取证书两种方法:
        使用证书授权机构
          生成签名请求(csr)
          将csr发送给CA
          从CA处接收签名
        自签名的证书
          权威认证机构只能自已签发自己的公钥

    安全协议

    • SSL: Secure Socket Layer(安全套接层)
    • TLS: Transport Layer Security(传输层安全协议)
          1995:SSL 2.0 Netscape
          1996: SSL 3.0
          1999: TLS 1.0
          2006: TLS 1.1 IETF(Internet工程任务组) RFC 4346
          2008:TLS 1.2 当前使用
          2015: TLS 1.3
        功能:机密性,认证,完整性,重放保护
    重放:不解密数据,把数据截取下来重新发送该数据,利用截取的数据假冒数据发送方把数据发送给接收方以获取其信息
    
    • 两阶段协议,分为握手阶段和应用阶段
        握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
        应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

    https工作过程

    • https工作过程:
      1、客户端client向服务端server发出请求,要登录https://www.domain.com
      2、服务端把已经拥有的证书发送给客户端,该证书内容包括服务端自己的公钥、ca的私钥签名、网站信息、证书有效期;而且该证书已经用数字签名(即使用CA的私钥加密)保证其来源的可靠性
      3、客户端信任CA,使用已经获取的CA的公钥进行解密,获取证书中服务端的公钥,此公钥确定是可靠可信的
      4、客户端生成随机字符串session key(即会话密钥,也叫对称密钥),使用服务端的公钥加密随机字符串key,传递给服务端
      5、服务器使用自己的私钥解密公钥加密的数据,获取key
      6、随后,通讯双方即可使用key加密数据进行通讯

    3.2 OpenSSL命令实现加密和创建CA

    openssl

    • OpenSSL:开源项目
        三个组件:
          openssl: 多用途的命令行工具,包openssl
          libcrypto: 加密算法库,包openssl-libs
          libssl:加密模块应用库,实现了ssl及tls,包nss
    • openssl命令:
        两种运行模式:交互模式和批处理模式
        openssl version:程序版本号
        标准命令、消息摘要命令、加密命令
        标准命令:
          enc, ca, req, …

    opensll命令实现加密

    • 对称加密:
        工具:openssl enc, gpg
        算法:3des, aes, blowfish, twofish
    • nc命令:
        帮助:man enc
        加密:
        openssl enc -e -des3 -a -salt -in testfile
          -out testfile.cipher
        解密:
        openssl enc -d -des3 -a -salt –in testfile.cipher
          -out testfile
        openssl ?
    • 单向加密:
        工具:md5sum, sha1sum, sha224sum,sha256sum…
          openssl dgst
    [root@centos7-1 data]#md5sum fstab
    961c41cf7e266c35a8acb08022c3fd0a  fstab
    [root@centos7-1 data]#openssl dgst -md5 fstab
    MD5(fstab)= 961c41cf7e266c35a8acb08022c3fd0a
    算法一致,结果也一致
    
    [root@centos7-1 data]#openssl dgst -sha fstab
    SHA(fstab)= 732fb007d706f6410b3b9e6189ebf5c4053e4102
    [root@centos7-1 data]#openssl dgst -sha1 fstab
    SHA1(fstab)= 6de655ee1b0a7cbfce29d244dba56a990b7b79df
    注意sha算法中,sha算法和sha1算法不同
    
    • dgst命令:
        帮助:man dgst
        openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
        openssl dgst -md5 testfile
        md5sum /PATH/TO/SOMEFILE
    • MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制
        CBC-MAC
        HMAC:使用md5或sha1算法
    • 生成用户密码:
        passwd命令:
        帮助:man sslpasswd
        openssl passwd -1 -salt SALT(最多8位)
        openssl passwd -1 –salt centos
    openssl passwd -l   输入密码,生成加密的随机字符,由于加的盐不同,即使密码相同,生成的字符串也不相同
    [root@centos7-1 data]#openssl passwd -1
    Password: 
    Verifying - Password: 
    $1$6xpH2Wqj$i7MsvvvrzmAZrVG1tfd8K1
    [root@centos7-1 data]#openssl passwd -1
    Password: 
    Verifying - Password: 
    $1$2rhWY8eg$PUrw57YH.8ifw9g1tFykQ0
    
    可以通过指定盐,相同的密码会生成相同的随机字符串
    [root@centos7-1 data]#openssl passwd -1 -salt 1$2rhWY8eg
    Password: 
    $1$1rhWY8eg$Xr3rR0UjxAthuQtJwdVp/.
    [root@centos7-1 data]#openssl passwd -1 -salt 1$2rhWY8eg
    Password: 
    $1$1rhWY8eg$Xr3rR0UjxAthuQtJwdVp/.
    
    • 生成随机数:
        帮助:man sslrand
        openssl rand -base64|-hex NUM
        NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
    base64编码详解:
    openssl rand -base64 N   生成N字节的随机数
    基于base64生成的随机数,64为2^6
    一个字节占8位,如果N*8能够被6整除,那么生成的随机数后不带=号(当随机数不够时,会使用=号占位),如果N*8不能被6整除,则生成的随机数后会有=号补全
    [root@centos7-1 data]#openssl rand -base64 3    3*8=24,能够被6整除
    1hBC
    [root@centos7-1 data]#openssl rand -base64 6    6*8=48,能够被6整除
    CWXZ8A7Z
    [root@centos7-1 data]#openssl rand -base64 5    5*8=40,不能够被6整除
    l6y7GxA=
    [root@centos7-1 data]#openssl rand -base64 11
    ghFJ452U9n2kV6k=
    
    base64编码,使用64个字符表示系统中的二进制
    64字符       对应二进制(这里用十进制表示,方便理解)
    A-Z               0-25 
    a-z               26-51
    0-9               52-61
    +                 62
    /                 63
    
    [root@centos7-1 data]#echo -n "ab"|base64
    YWI=
    如a,十进制为97,二进制为01100001
    如b         98         01100010
    64为2^6,即使用6位表示
    二进制:    011000   01 0110   0010 00   以6位分割,最后缺少两位用00补齐
    十进制:      24       22       8
    base64编码:  Y        W        I=       根据64字符与二进制对应表得出
    由于二进制最后两位没有,是补出来的,因此base64编码中在I后加上=号,即YWI=
    
    [root@centos7-1 data]#echo -n "abc"|base64
    YWJj
    二进制:    011000   01 0110   0010 011   00011 00   
    十进制:      24       22       9           35
    base64编码:  Y        W        J            j         
    abc,一个字符占8位,三个字符24位,能够被6整除,因此base64编码中没有=号,而YWJj用同样的计算方法可以计算得出
    
    • 公钥加密:
        算法:RSA, ELGamal
        工具:gpg, openssl rsautl(man rsautl)
    • 数字签名:
        算法:RSA, DSA, ELGamal
    • 密钥交换:
        算法:dh
        DSA: Digital Signature Algorithm
        DSS:Digital Signature Standard
        RSA:
    • 生成密钥对儿:man genrsa
    • 生成私钥
        openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
        (umask 077; openssl genrsa –out test.key –des 2048)
        openssl rsa -in test.key –out test2.key 将加密key解密
    • 从私钥中提取出公钥
        openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
        openssl rsa –in test.key –pubout –out test.key.pub
    • 随机数生成器:伪随机数字
        键盘和鼠标,块设备中断
        /dev/random:仅从熵池返回随机数;随机数用尽,阻塞
        /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

    openssl

    • PKI:Public Key Infrastructure
        CA
        RA
        CRL
        证书存取库
    • 建立私有CA:
        OpenCA
        openssl
    • 证书申请及签署步骤:
        1、生成申请请求
        2、RA核验
        3、CA签署
        4、获取证书
    搭建私有CA需要用到关键配置文件/etc/pki/tls/openssl.cnf 
      ####################################################################
      [ ca ]
      default_ca      = CA_default            # The default ca section           CA没有明确指定的情况下,使用CA_default
      
      ####################################################################
      [ CA_default ]               CA_default中的各选项定义
      
      dir             = /etc/pki/CA           # Where everything is kept            CA的工作目录,由openssl软件包生成
      certs           = $dir/certs            # Where the issued certs are kept     保存发布的证书列表
      crl_dir         = $dir/crl              # Where the issued crl are kept     保存吊销的证书列表
      database        = $dir/index.txt        # database index file.    证书的索引数据库,存放已颁发证书的相关信息,该文件默认不存在,需要手动创建,CA颁发证书后,会自动在该文件写入数据
      #unique_subject = no                    # Set to 'no' to allow creation of
                                              # several ctificates with same subject.
      new_certs_dir   = $dir/newcerts         # default place for new certs.      存放新颁发的证书
      
      certificate     = $dir/cacert.pem       # The CA certificate                保存根CA证书,即自签名证书
      serial          = $dir/serial           # The current serial number         保存下一个要颁发证书的编号
      crlnumber       = $dir/crlnumber        # the current crl number            保存下一个被吊销证书的编号
                                              # must be commented out to leave a V1 CRL
      crl             = $dir/crl.pem          # The current CRL                   保存证书吊销列表
      private_key     = $dir/private/cakey.pem# The private key                   保存私钥文件,且该文件必须被命名为cakey.pem
     
      default_days    = 365                   # how long to certify for    证书默认有效期
      default_crl_days= 30                    # how long before next CRL   吊销证书列表每30天发布一次 
      default_md      = sha256                # use SHA-256 by default     默认使用算法
      preserve        = no                    # keep passed DN ordering
    
      policy          = policy_match           策略默认使用policy_match
      
      # For the CA policy
      [ policy_match ]
      countryName             = match           国家
      stateOrProvinceName     = match           省
      organizationName        = match           公司名称
      organizationalUnitName  = optional        组织部门
      commonName              = supplied        证书用途(给哪个网站使用),必须提供
      emailAddress            = optional        邮箱
     注意:policy_match策略要求国家、省、公司名称必须相同,其他项可以不同
     
      # For the 'anything' policy
      # At this point in time, you must list all acceptable 'object'
      # types.
      [ policy_anything ]                  policy_anything策略允许每项都不相同    
      countryName             = optional
      stateOrProvinceName     = optional
      localityName            = optional
      organizationName        = optional
      organizationalUnitName  = optional
      commonName              = supplied      该选项必须提供
      emailAddress            = optional
    注意:policy_anything策略各选项不必相同
    

    创建CA和申请证书

    • 创建私有CA:
        openssl的配置文件:/etc/pki/tls/openssl.cnf
        三种策略:匹配、支持和可选
          匹配指要求申请填写的信息跟CA设置信息必须一致
          支持指必须填写这项申请信息
          可选指可有可无
    • 1、创建所需要的文件
        touch /etc/pki/CA/index.txt 生成证书索引数据库文件
        echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号
      注意:如果没有创建/etc/pki/CA/index.txt和/etc/pki/CA/serial文件,在颁发证书时会出错
    • 2、 CA自签证书
        生成私钥
        cd /etc/pki/CA/
        (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
        生成自签名证书
        openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
          -new: 生成新证书签署请求
          -x509: 专用于CA生成自签证书
          -key: 生成请求时用到的私钥文件
          -days n:证书的有效期限
          -out /PATH/TO/SOMECERTFILE: 证书的保存路径
      注意:创建时,要填写必要的信息:国家、省、公司名等
    • 3、生成私钥以及证书申请
        在需要使用证书的主机生成证书请求,给web服务器生成私钥
          (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048)
        生成证书申请文件
          openssl req -new -key /etc/pki/tls/private/test.key -days 365 -out /etc/pki/tls/test.csr (-day 365可以省略不写,因为证书有效期由颁发机构指定)
      注意:申请CA证书填写的内容中国家、省、公司名必须与服务器端自签名证书中的一致
      把证书申请传递到服务器端
        将证书请求文件传输给CA
          scp /etc/pki/tls/test.csr x.x.x.x:/etc/pki/CA (x.x.x.x为服务器ip地址)
    • 4、CA签署证书,并将证书颁发给请求者
          openssl ca -in /etc/pki/CA/test.csr –out /etc/pki/CA/certs/test.crt -days 365
          注意:默认国家,省,公司名称三项必须和CA一致
        查看证书中的信息:
          openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates
          openssl ca -status SERIAL 查看指定编号的证书状态
    • 5、吊销证书
        在客户端获取要吊销的证书的serial
          openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
        在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书:
          openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
        指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行
          echo 01 > /etc/pki/CA/crlnumber
        更新证书吊销列表
          openssl ca -gencrl -out /etc/pki/CA/crl.pem
        查看crl文件:
          openssl crl -in /etc/pki/CA/crl.pem -noout -text

    知识扩展:

    如果再次申请CA证书,申请证书填写的信息(国家、省、公司名称)与根CA证书信息不一致,将出现以下错误信息:
    The stateOrProvinceName field needed to be the same in the
    CA certificate (xxxx) and the request (xxxx)
    解决方法:
    更改/etc/pki/tls/openssl.cnf配置文件
     方法1:把policy_match策略更改为policy_anything,任意匹配
     81 policy          = policy_match                                      
    方法2:把国家、省、公司名称后的match更改为optional
     84 [ policy_match ]
     85 countryName             = match
     86 stateOrProvinceName     = match
     87 organizationName        = match
     88 organizationalUnitName  = optional
     89 commonName              = supplied
     90 emailAddress            = optional
    

    4、SSH

    • ssh: secure shell, protocol, 22/tcp, 安全的远程登录
    • 具体的软件实现:
        OpenSSH: ssh协议的开源实现,CentOS默认安装
        dropbear:另一个开源实现
    • SSH协议版本
        v1: 基于CRC-32做MAC,不安全;man-in-middle
        v2:双方主机协议选择安全的MAC方式
        基于DH算法做密钥交换,基于RSA或DSA实现身份认证
    • 两种方式的用户登录认证:
        基于password
        基于key

    知识扩展:
    远程执行命令,无需登录到目标主机,适用于查看目标主机的简单信息

    [root@centos7-1 ~]#ssh yuan@192.168.32.128 'hostname'
    yuan@192.168.32.128's password: 
    centos6
    

    openssh软件组成

    • OpenSSH介绍
    • 相关包:
        openssh
        openssh-clients
        openssh-server
    • 工具:
        基于C/S结构
        Client: ssh, scp, sftp,slogin
         Windows客户端:
         xshell, putty, securecrt, sshsecureshellclient
        Server: sshd

    ssh客户端

    • 客户端组件:
    • ssh, 配置文件:/etc/ssh/ssh_config
        Host PATTERN
          StrictHostKeyChecking no 首次登录不显示检查提示
    • 格式:ssh [user@]host [COMMAND]
        ssh [-l user] host [COMMAND]
    • 常见选项
        -p port:远程服务器监听的端口
        -b:指定连接的源IP
        -v:调试模式
        -C:压缩方式
        -X:支持x11转发
        -t:强制伪tty分配
          ssh -t remoteserver1 ssh remoteserver2
    • 允许实现对远程系统经验证地加密安全访问
    • 当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*\key.pub(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接
    -X 支持x11转发
    即nm-connection-editor  图形界面
    ssh -X  192.168.32.6  让远程主机图形界面在本机显示,无论目标主机是否为图形界面,本机调用目标主机的图形界面不受影响
    底层通过X协议实现通过图形程序让客户端和服务器端的通讯
    对于X协议来说,客户端与服务器端与ssh协议正好相反,本机充当服务器,远程主机相当于客户端
    windows通过远程连接linux,并显示图形界面,使用xmanager中的xstart软件可以实现,退出当前用户登录即可退出xstart远程连接
    
    -t  强制伪终端分配
    多台设备通过逐个跳转,远程连接到远端主机
    如ABCDE五台主机,A连接到E,只能通过A-->B-->C-->D-->E的方式实现远程
    可以通过ssh -t实现,命令如下:
    ssh -t 192.168.32.7 ssh -t 192.168.32.17 ssh 192.168.32.27
    需要逐个输入每台主机的登录密码
    最后一个终端可以不用加-t选项
    

    ssh服务登录验证

    • ssh服务登录验证方式:
        用户/口令
        基于密钥
    • 基于用户和口令登录验证
        1、客户端发起ssh请求,服务器会把自己的公钥发送给用户
        2、用户会根据服务器发来的公钥对密码进行加密
        3、加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
    • 基于密钥的登录方式
        1、首先在客户端生成一对密钥(ssh-keygen)
        2、并将客户端的公钥ssh-copy-id 拷贝到服务端
        3、当客户端再次发送一个连接请求,包括ip、用户名
        4、服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf
        5、服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
        6、得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
        7、服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

    ssh命令实现基于key认证

    • 基于密钥的认证:
      (1) 在客户端生成密钥对
        ssh-keygen -t rsa [-P ‘’] [-f “~/.ssh/id_rsa”]
      ssh-keygen -t rsa
      (2) 把公钥文件传输至远程服务器对应用户的家目录
        ssh-copy-id [-i [identity_file]] [user@]host
      ssh-copy-id 192.168.32.128(目标ip地址)
      (3) 测试
    直接远程登录即可,无需输入口令
    ssh  192.168.32.128(目标ip地址)
    

    (4)重设私钥口令:
      ssh-keygen –p
    (5)验证代理(authentication agent)保密解密后的密钥
      这样口令就只需要输入一次
      在GNOME中,代理被自动提供给root用户
      否则运行ssh-agent bash
    (6)钥匙通过命令添加给代理
      ssh-add

    • 在SecureCRT或Xshell实现基于key验证
        在SecureCRT工具—>创建公钥—>生成Identity.pub文件
        转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh主机上执行:
        ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys

    排错小结:

    ssh是基于key连接通讯双方,如果有主机通过冒充ip地址以及mac地址连接某主机是行不通的,会有警告信息出现,因此基于key的验证方法相对更为安全
    hostA向hostB发起连接请求,
    第一次通讯时,hostA把hostB的公钥/etc/ssh/ssh_host_rsa_key.pub复制到自己主机/root/.ssh/know_hosts文件下
    主机hostB用自己的私钥进行签名加密数据发送给主机hostA,而此时主机hostA已经存有hostB的公钥,如果可以解密,说明hostB是原来的设备,如果无法解密,则说明是另外的设备
    注意:如果hostB的私钥被窃取,那么获取hostB私钥的设备可以冒充hostB与之前和hostB验证过的设备通信,因此对于私钥要做好保密措施
    复制私钥到其他主机时,注意文件的用户、组以及权限问题
    
    如果使用新设备代替旧设备,而新设备的地址改为旧地址的ip,此时,新设备的key与老设备不同,此时想通过该ip地址连接到新设备时,会提示错误信息:提示目标主机的key发生变化
    解决方法:删除本机记录的旧设备的key信息,再次连接新设备即可
    rm -rf  /root/.ssh
    

    如何确认第一次连接的目标主机为可信的目标主机

    拿到目标主机的公钥信息/etc/ssh/ssh_host_rsa_key.pub与当前显示的key进行比较,如果一致,则表示目标可信
    [root@centos6 ~]#ssh 192.168.32.129
    The authenticity of host '192.168.32.129 (192.168.32.129)' can't be established.
    RSA key fingerprint is 3a:19:e1:94:56:01:ed:08:15:7c:1c:30:9d:93:d7:28.
    Are you sure you want to continue connecting (yes/no)?
    
    计算方法:
    cp ssh_host_rsa_key.pub(目标主机公钥) /data
    base64 -d /data/ssh_host_rsa_key.pub  >pubkey
    [root@centos7-1 data]# md5sum pubkey   centos7中出来md5运算,还有sha256运算得出的值
    3a19e1945601ed08157c1c309d93d728  pubkey
    发现与RSA key fingerprint is 3a:19:e1:94:56:01:ed:08:15:7c:1c:30:9d:93:d7:28.中的key一致,说明目标主机可信
    

    实现100台设备批量导入公钥信息:

    使用expect工具
    vim ssh_push_key.sh
    #!/bin/bash
    pass="magedu"
    rpm -q expect &> /dev/null || yum -y install expect
    ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
    while read ip ;do
    expect <<EOF
    spawn ssh-copy-id  -i /root/.ssh/id_rsa.pub  $ip
    #若要增加用户名,则$ip更改为用户@$ip,如:yuan@$ip
    expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" { send "$pass\n" }
    }
    expect eof
    EOF
    done < iplist.txt
    注意:脚本中iplist.txt文件需要生成,可通过脚本实现
    

    scp命令

    • scp命令:
    • scp [options] SRC… DEST/
    • 两种方式:
        scp [options] [user@]host:/sourcefile /destpath
        scp [options] /sourcefile [user@]host:/destpath
    • 常用选项:
        -C 压缩数据流
        -r 递归复制
        -p 保持原文件的属性信息
        -q 静默模式
        -P PORT 指明remote host的监听的端口
      缺点:当某个文件发生变化时,scp会把所有文件全部复制一遍到远程主机,这样一来就会浪费带宽

    rsync命令

    • 基于ssh和rsh服务实现高效率的远程系统之间复制文件
    • 使用安全的shell连接做为传输方式
        rsync –av /etc server1:/tmp 复制目录和目录下文件
        rsync –av /etc/ server1:/tmp 只复制目录下文件
    • 比scp更快,只复制不同的文件
    • 选项:
        -n 模拟复制过程
        -v 显示详细过程
        -r 递归复制目录树
        -p 保留权限
        -t 保留时间戳
        -g 保留组信息
        -o 保留所有者信息
        -l 将软链接文件本身进行复制(默认)
        -L 将软链接文件指向的文件复制
        -a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
    该命令基于增量型复制,只复制发生变化文件,未发生变化的文件不会复制,节约流量带宽,很好的解决了scp的问题
    

    sftp命令

    • 交互式文件传输工具
    • 用法和传统的ftp工具相似
    • 利用ssh服务实现安全的文件上传和下载
    • 使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息
        sftp [user@]host
        sftp> help

    pssh工具

    • pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制,使用epel源安装才能使用
    • 选项如下:
        --version:查看版本
        -h:主机文件列表,内容格式”[user@]host[:port]”
        -H:主机字符串,内容格式”[user@]host[:port]”
        -A:手动输入密码模式
        -i:每个服务器内部处理信息输出
        -l:登录使用的用户名
        -p:并发的线程数【可选】
        -o:输出的文件目录【可选】
        -e:错误输入文件【可选】
        -t:TIMEOUT 超时时间设置,0无限制【可选】
        -O:SSH的选项
        -P:打印出服务器返回信息
        -v:详细模式
      示例:
    通过pssh批量关闭seLinux
    pssh -H root@192.168.23.130 -i "sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config" 
    pssh -H root@192.168.32.120 -i setenforce 0
    
    将标准错误和标准正确重定向都保存至/app目录下
    pssh -H 192.168.32.130 -o /app -e /app -i "hostname"
    
    pssh -H 192.168.32.130 -i hostname
    当不支持ssh的key认证时,通过 -A选项,使用密码认证批量执行指令
    [root@centos7-1 ~]#pssh -H 192.168.32.130 -A -i hostname
    Warning: do not enter your password if anyone else has superuser
    privileges or access to your account.
    Password:                                   输入密码
    [1] 21:46:44 [SUCCESS] 192.168.32.130
    centos7-2.magedu.com
    
    管理多台主机时,需要输入多个密码(假设密码不一致)
    [root@centos7-1 ~]#pssh -H 192.168.32.130 -H 192.168.32.128 -A -i hostname
    Warning: do not enter your password if anyone else has superuser
    privileges or access to your account.
    Password:                                  输入密码
    [1] 21:46:44 [SUCCESS] 192.168.32.130
    centos7-2.magedu.com
    输入第一个密码,则第二个主机命令执行失败
    解决方法:使用基于key验证管理多台主机(无需输入密码),前提时主机之间已经实现基于key的验证
    pssh命令默认基于key验证
    [root@centos7-1 .ssh]#pssh -H 192.168.32.130 -H 192.168.32.128 -i hostname
    [1] 21:53:05 [SUCCESS] 192.168.32.128
    centos6
    [2] 21:53:05 [SUCCESS] 192.168.32.130
    centos7-2.magedu.com
    
    管理大批量主机时,可以把ip地址存入文本中,调用该文本即可
    -h  调用主机文件列表
    [root@centos7-1 ~]#cat iplist.txt 
    192.168.32.128
    192.168.32.130
    [root@centos7-1 ~]#pssh -h iplist.txt -i hostname
    [1] 21:56:07 [SUCCESS] 192.168.32.128
    centos6
    [2] 21:56:07 [SUCCESS] 192.168.32.130
    centos7-2.magedu.com
    
    批量创建账号
    [root@centos7-1 ~]#pssh -h iplist.txt -i "useradd testuser"
    [1] 21:57:07 [SUCCESS] 192.168.32.130
    [2] 21:57:08 [SUCCESS] 192.168.32.128
    [root@centos7-1 ~]#pssh -h iplist.txt -i "getent passwd testuser"
    [1] 21:57:18 [SUCCESS] 192.168.32.128
    testuser:x:501:501::/home/testuser:/bin/bash
    [2] 21:57:18 [SUCCESS] 192.168.32.130
    testuser:x:1001:1001::/home/testuser:/bin/bash
    

    PSCP.PSSH命令

    • pscp.pssh功能是将本地文件批量复制到远程主机
    • pscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote
    • Pscp-pssh选项
        -v 显示复制过程
        -r 递归复制目录
    • 将本地curl.sh 复制到/app/目录
      pscp.pssh -H 192.168.1.10 /root/test/curl.sh /app/
      pscp.pssh -h host.txt /root/test/curl.sh /app/
    • 将本地多个文件批量复制到/app/目录
      pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /app/
    • 将本地目录批量复制到/app/目录
      pscp.pssh -H 192.168.1.10 -r /root/test/ /app/

    PSLURP命令

    • pslurp功能是将远程主机的文件批量复制到本地
    • pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)
    • Pslurp选项
      -L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
      -r 递归复制目录
    • 批量下载目标服务器的passwd文件至/app下,并更名为user
      pslurp -H 192.168.1.10 -L /app/ /etc/passwd user
    如果拉取多个文件,该命令把文件拉取过来以后,会自动创建以对方主机ip为命名的目录存放拉取过来的文件,用以区分文件
    [root@centos7-1 ~]pslurp -H 192.168.32.130 -L /data/ /etc/fstab f1
    [root@centos7-1 data]#tree
    .
    ├── 192.168.32.128
    │   └── f1
    ├── 192.168.32.130
        └── f1
    

    SSH端口转发

    • SSH端口转发
      SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,也能够通过将 TCP 端口转发来使用 SSH 进行通讯
    • SSH 端口转发能够提供两大功能:
        加密 SSH Client 端至 SSH Server 端之间的通讯数据
        突破防火墙的限制完成一些之前无法建立的 TCP 连接
    • 本地转发:
        -L localport:remotehost:remotehostport sshserver
    • 选项:
        -f 后台启用
        -N 不打开远程shell,处于等待状态
        -g 启用网关功能
      示例:
      ssh –L 9527:telnetsrv:23 -N sshsrv
      telnet 127.0.0.1 9527
      当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
      data<- ->ocalhost:9527<- ->ocalhost:XXXXX<- ->shsrv:22<- ->shsrv:YYYYY<- ->telnetsrv:23
    实验1:本地转发  
    A B C 三台主机,A在互联网(外网),B和C在同一局域网  
    A:192.168.32.6  
    B:192.168.32.7  
    C:192.168.32.17  
    主机B只能通过ssh访问,主机C只能通过telnet访问,主机A不能够直接访问主机C  
    A---->C    A到C使用telnet连接不安全  
    可以通过A--->B--->C实现    
    A---->B  通过ssh连接,该阶段A相当于ssh客户端,B相当于ssh服务端。主机A会开启一个随机端口号,通过22端口连接主机B  
    B---->C  通过telnet连接,该阶段B相当于telnet客户端,C相当于telnet服务端。主机B也会开启一个随机端口号,通过23端口连接主机C  
    由于B和C在公司内网,实现了A到C的安全访问  
    在主机A上进行配置,开启一个端口9527  
    当连接主机A的9527端口时,就会被ssh协议封装起来,传到主机B,主机B收到以后解封装,再通过telnet连接到主机C  
    
    模拟实验:
    三台主机分别安装telnet、telnet-server,相互之间测试通过telnet访问
    systemctl start telnet.socket   开启telnet服务
    ss -ntl   查看telnet23端口是否开启
    在主机C上进行防火墙设置:C拒绝A的访问
    iptables -A INPUT -s  192.168.32.6(拒绝访问的ip地址) -j REJECT 
    在主机A进行操作:
    ssh -L 9527:192.168.32.17:23 -Nf 192.168.32.7
    192.168.32.17  目标服务器地址(telnet server)
    192.168.32.7   主机B地址(ssh server)
    ss -nt  在主机A执行命令查看9527端口是否已开启
    在主机A上进行远程连接
    telnet 127.0.0.1 9527
    关闭隧道  killall ssh
    
    • 远程转发:
      -R sshserverport:remotehost:remotehostport sshserver
      示例:
      ssh –R 9527:telnetsrv:23 –N sshsrv
      让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
      Data<- ->shsrv:9527<- ->shsrv:22<- ->ocalhost:XXXXX<- ->ocalhost:YYYYY<- ->telnetsrv:23
    一般情况下,公司内部不允许外部主机连接内部主机
    因此可以通过从公司内部主机B主动连接外部主机A(公司防火墙一般情况下不会进制从内往外连接),建立连接后,在通过ssh隧道封装telnet等其他协议与公司内部主机C(telnet server)通信
    实验2:远程转发:反向ssh端口转发
    B--->A   B充当ssh客户端,A充当ssh服务端
    A--->B   此过程直接完成
    B--->C   B充当telnet客户端,C充当telnet服务端
    A:192.168.32.6
    B:192.168.32.7
    C:192.168.32.17
    在主机B上进行配置
    ssh -R 9527:192.168.32.17:23  192.168.32.6
    192.168.32.17   目标主机(telnet server)在实际应用中配置,192.168.32.17应配置为公网地址
    192.168.32.6    主机A的地址
    ss -nt  在主机A执行命令查看9527端口是否已开启
    在主机A上远程连接
    telnet 127.0.0.1 9527
    
    实验3:A B C D四台主机  
    A B在同一局域网,C D在同一局域网  
    B C可以通过ssh转发数据  
    实现主机A与主机D通过互联网进行通信  
    两种方法:
    方法1:本地转发
    主机B充当ssh客户端,主机C充当ssh服务端
    命令:ssh -L
    方法2:远程转发
    主机B充当ssh服务端,主机C充当ssh客户端
    命令:ssh -R
    这两种方法最终实现效果一样
    使用smtp协议模拟实验,端口号为25
    该协议不支持远程连接,要在配置文件中更改
    vim /etc/postfix/main.cf
    inet_interfaces = all  把该行前的注释符号去掉
    在主机B上进行配置
    先关闭防火墙iptables -F,再添加策略
    iptables -A -s  192.168.32.6  -j REJECT
    iptables -A -s  192.168.32.7  -j REJECT
    A:192.168.32.6
    B:192.168.32.7
    C:192.168.32.17
    D:192.168.32.27
    本地转发:在主机B上进行操作
    ssh -L 9527:192.168.32.27:25  -Nfg 192.168.32.17
    查看9527端口是否存在,此时9527端口为*:9527,而不是127.0.0.1:9527,说明任意ip地址都可以使用该端口
    在主机A上进行以下操作:
    telnet 192.168.32.7 9527
    
    远程转发:在主机C上进行操作
    ssh -L 9527:192.168.32.27:25  -Nfg 192.168.32.7
    查看9527端口是否存在
    在主机A上进行以下操作:
    telnet 192.168.32.7 9527
    
    • 动态端口转发:
    • 当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet
      ssh -D 1080 root@sshserver
      在本机firefox设置代理socket proxy:127.0.0.1:1080
      curl --socks5 127.0.0.1:1080 http://www.qq.com
    动态端口转发
    A:192.168.32.6      谷歌网站
    B:192.168.32.7      虚拟主机VPS
    C:192.168.32.17     上网主机client
    模拟实验
    在主机A上执行命令
    iptables -A INPUT -s  192.168.32.17 -j REJECT
    在主机C上进行操作
    ssh -D 9527 192.168.32.7 -fN
    192.168.32.7  虚拟主机vps ip地址(跳板机)
    此时仍然无法连接谷歌网站,需要配置浏览器的代理服务器地址192.168.32.17  端口:9527
    浏览器设置:preferences--高级--network--setting--手工指定代理服务器地址(manual proxy configuration)--SOCKS Host 127.0.0.1  port 9527
    只能在本机上使用,而且本机必须是linux系统
    
    第四台主机D:192.168.32.27
    通过上网主机client连接谷歌网站
    在主机C上进行操作
    ssh -D 9527 192.168.32.7 -fNg
    此时要配置浏览器的代理服务器地址192.168.32.17  端口:9527
    或curl --socks5 192.168.32.17:9527 http://192.168.32.6,使用该命令无需为浏览器配置代理地址
    

    X协议转发

    • 所有图形化应用程序都是X客户程序
        能够通过tcp/ip连接远程X服务器
        数据没有加密机,但是它通过ssh连接隧道安全进行
    • ssh -X user@remotehost gedit
        remotehost主机上的gedit工具,将会显示在本机的X服务器上
        传输的数据将通过ssh连接加密

    ssh服务器

    • 服务器端:sshd, 配置文件: /etc/ssh/sshd_config
    • 常用参数:
        Port
        ListenAddress ip
        LoginGraceTime 2m
        PermitRootLogin yes
        StrictModes yes 检查.ssh/文件的所有者,权限等
        MaxAuthTries 6
        MaxSessions 10 同一个连接最大会话
        PubkeyAuthentication yes
        PermitEmptyPasswords no
        PasswordAuthentication yes
        GatewayPorts no
        ClientAliveInterval:单位:秒
        ClientAliveCountMax:默认3
        UseDNS yes
        GSSAPIAuthentication yes 提高速度可改为no
        MaxStartups 未认证连接最大值,默认值10
        Banner /path/file
    • 限制可登录用户的办法:
        AllowUsers user1 user2 user3
        DenyUsers
        AllowGroups
        DenyGroups
    man sshd_config   查看配置文件帮助
    sshd_config参数介绍:
     17 #Port 22    端口号,一般情况下要连接到互联网要更改为非标准端口号
     18 #AddressFamily any        any指支持ipv4和ipv6地址
     19 #ListenAddress 0.0.0.0    哪个ip地址监听服务端口号,默认所有ip地址都可以访问22端口,可以指定22端口被本地某个ip地址监听,如:listenaddress 192.168.32.7                                              
     22 HostKey /etc/ssh/ssh_host_rsa_key
     23 #HostKey /etc/ssh/ssh_host_dsa_key
     24 HostKey /etc/ssh/ssh_host_ecdsa_key
     25 HostKey /etc/ssh/ssh_host_ed25519_key  主机之间相互连接使用的key,基于不同算法生成,centos7连接使用ecdsa算法生成的key,centos6连接使用rsa算法生成的key
    
     37 #LoginGraceTime 2m       连接等待时间,默认为2分钟(即连接时输入密码之前状态的等待时间)
     38 #PermitRootLogin yes   允许root登录,默认为yes,如果为no,则root不允许登录,可以先登录普通用户再切换root用户登录
     39 #StrictModes yes  严格模式,是否检查必要文件的权限
     40 #MaxAuthTries 6   最大验证尝试次数为6,但验证时默认为3次
     41 #MaxSessions 10   指每个网络连接开启的会话次数,每个网络连接是指在同一个连接窗口下克隆该窗口的次数最大为10次,
     43 #PubkeyAuthentication yes      基于密码验证
     47 AuthorizedKeysFile      .ssh/authorized_keys    基于key验证文件存放位置
     65 PasswordAuthentication yes   支持用户名密码验证
     
     79 GSSAPIAuthentication no 
     115 UseDNS no
    以上两项建议更改为no,系统连接速度会变快
    
     98 #AllowAgentForwarding yes      允许代理转发
     99 #AllowTcpForwarding yes        允许tcp转发
     117 #MaxStartups 10:30:100   限制并发连接数   
     当最大连接数不超过10次时,不受影响;当连接数超过10次时开始随机拒绝最大连接数的30%主机连接,70%不受影响;当连接数达到100时,拒绝全部主机连接
    112 #ClientAliveInterval 0  客户端存活间隔,默认一直存活,不做检查;如果为其他数字,表示每隔多少秒探测一次客户端是否存活
    113 #ClientAliveCountMax 3   默认探测三次
    Banner /path/file    用户登录时的登录提示,可以在文件中写入提示语句,登录时显示该提示语句
    

    ssh服务的最佳实践
    建议使用非默认端口
    禁止使用protocol version 1
    限制可登录用户
    设定空闲会话超时时长
    利用防火墙设置ssh访问策略
    仅监听特定的IP地址
    基于口令认证时,使用强密码策略
      tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs
    使用基于密钥的认证
    禁止使用空密码
    禁止root用户直接登录
    限制ssh的访问频度和并发在线数
    经常分析日志
    知识扩展:

    分析日志/var/log/secure,把失败连接次数过多的ip地址扔到防火墙
    awk '/Failed password for root from/{ip[$(NF-3)]++}END{for (i in ip){if(ip[i]>=3)system("iptables -A INPUT -s "i" -j REJECT")}}' /var/log/secure
    

    5、dropbear编译安装

    • 源码编译安装:
      1、安装开发包组:yum groupinstall “Development tools”
      2、下载dropbear-2017.75.tar.bz2
      3、解压源码包tar xf dropbear-2017.75.tar.bz2
      4、查看相关编译文档less INSTALL README
      5、开始编译,指定配置文件安装路径
        ./configure --prefix=/app/dropbear --sysconfdir=/etc/dropbear --disable-zlib
      6、make PROGRAMS=“dropbear dbclient dropbearkey dropbearconvert scp”
      7、make PROGRAMS=“dropbear dbclient dropbearkey dropbearconvert scp” install
      8、配置PATH路径,在任意目录下都可以执行该命令
        echo PATH=/app/dropbear/bin:/app/dropbear/sbin:$PATH >> /etc/profile.d/dropbear.sh
        source /etc/profile.d/dropbear.sh
      9、生成运行服务所需的key
        mkdir /etc/dropbear
        cd /app/dropbear/bin
        dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
        dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key
      10、运行服务,指定服务端口为2222:
        cd /app/dropbear/sbin
        dropbear -p :2222 -F –E #前台运行
        或dropbear -p :2222 #后台运行
        ss -ntl 查看端口是否启动
        cat /var/run/dropbear.pid 查看dropbear进程号
      11、dropbear软件工具测试
        cd /app/dropbear/bin
        (1)使用dbclient客户端连接其他主机
          source /etc/profile.d/dropbear.sh
          dbclient 192.168.32.128
        (2)使用scp远程复制文件
          此时系统默认使用/usr/bin/下的dbclient,创建软链接指向/app/dropbear/下的dbclient
          ln -s /app/dropbear/bin/dbclient /usr/bin/dbclient
      12、把此服务设置为开机自启动
        dropbear -p :2222 #后台运行 把dropbear设备后台运行
        方法1:在/usr/lib/systemd/system/下配置service文件
        方法2:写入/etc/rc.local文件
          /app/dropbear/sbin/dropbear -p 2222
          chmod +x /etc/rc.d/rc.local 给文件加上执行全兴
      13、如果使用完毕,不再需要该工具,可以删除
        删除此服务
        删除etc/rc.local配置文件中的内容
        杀掉dropbear进程
          killall dropbear
        删除配置文件
          rm -rf /app/dropbear
          rm -rf /etc/dropbear
        删除源码文件
          rm -rf dropbear-2018.76*
        此时本机的scp复制文件存在问题
        删除PATH变量下的路径
          rm -rf /etc/profile.d/dropbear.sh
        删除hash缓存,缓存中存的是/app/dropbear/sbin下的scp
          hash -r 删除全部缓存
          hash -d 删除某条缓存记录

    6、TCP_Wrappers

    TCP_Wrappers介绍

    • 作者:Wieste Venema,IBM,Google
    • 工作在第四层(传输层)的TCP协议
    • 对有状态连接的特定服务进行安全检测并实现访问控制
    • 以库文件形式实现
    • 某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的
    • 判断服务程序是否能够由tcp_wrapper进行访问控制的方法:
      ldd /PATH/TO/PROGRAM|grep libwrap.so
      strings PATH/TO/PROGRAM|grep libwrap.so
      注意:ldd,strings后要跟命令的绝对路径

    TCP_Wrappers的使用

    • 配置文件:/etc/hosts.allow, /etc/hosts.deny
    • 帮助参考:man 5 hosts_access,man 5 hosts_options
    • 检查顺序:hosts.allow,hosts.deny(默认允许)
    • 注意:一旦前面规则匹配,直接生效,将不再继续
    • 基本语法:
        daemon_list@host: client_list [ :options :option… ]
    • Daemon_list@host格式
        单个应用程序的二进制文件名,而非服务名,例如vsftpd
        以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd
        ALL表示所有接受tcp_wrapper控制的服务程序
        主机有多个IP,可用@hostIP来实现控制
          如:in.telnetd@192.168.0.254
    • 客户端Client_list格式
        以逗号或空格分隔的客户端列表
        基于IP地址:192.168.10.1 192.168.1.
        基于主机名:www.magedu.com .magedu.com 较少用
        基于网络/掩码:192.168.0.0/255.255.255.0
        基于net/prefixlen: 192.168.1.0/24(CentOS6不支持此写法,只能centos7使用)
        基于网络组(NIS 域):@mynetwork
        内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID
      EXCEPT用法:

    示例:
    vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1

    示例:

    只允许192.168.1.0/24的主机访问sshd  
    /etc/hosts.allow
    sshd: 192.168.1.
    /etc/hosts.deny
    sshd :ALL
    只允许192.168.1.0/24的主机访问telnet和vsftpd服务  
    /etc/hosts.allow
    vsftpd,in.telnetd: 192.168.1.
    /etc/host.deny
    vsftpd,in.telnetd: ALL
    
    • [:options]选项:
    • 帮助:man 5 hosts_options
        deny 主要用在/etc/hosts.allow定义“拒绝”规则
          如:vsftpd: 172.16. :deny
        allow 主要用在/etc/hosts.deny定义“允许”规则
          如:vsftpd:172.16. :allow
        spawn 启动一个外部程序完成执行的操作
        twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null
    • 测试工具:
        tcpdmatch [-d] daemon[@host] client
        -d 测试当前目录下的hosts.allow和hosts.deny

    示例:

    sshd: ALL :spawn echo "$(date +%%F) login attempt from %c to %s,%d" >>/var/log/sshd.log    当ssh登录所有主机时,执行记录日志动作
    说明:
    在/etc/hosts.allow中添加,允许登录,并记录日志
    在/etc/hosts.deny中添加,拒绝登录,并记录日志
    %c 客户端信息
    %s 服务器端信息
    %d 服务名
    %p 守护进程的PID
    %% 表示%
    vsftpd: 172.16. :twist /bin/echo "connection prohibited"  拒绝172.16.0.0网段访问,并提示connection prohibited
    

    7、PAM认证机制

    PAM认证机制

    • PAM:Pluggable Authentication Modules
        认证库:文本文件,MySQL,NIS,LDAP等
        Sun公司于1995 年开发的一种与认证相关的通用框架机制
        PAM 是关注如何为服务验证用户的   API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开
        使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序
        一种认证框架,自身不做认证
    • 它提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等应用程序中。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要调用函数pam_sm_xxxx( )供PAM接口库调用,将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来
    • PAM相关文件
        模块文件目录:/lib64/security/*.so
        环境相关的设置:/etc/security/
        主配置文件:/etc/pam.conf,默认不存在
        为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
        注意:如/etc/pam.d存在,/etc/pam.conf将失效

    PAM认证原理

    • PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
    • PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
    • PAM认证过程:
      1.使用者执行/usr/bin/passwd 程序,并输入密码
      2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
      3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
      4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

    PAM配置文件与模块

    • 通用配置文件/etc/pam.conf格式
        application type control module-path arguments
    • 专用配置文件/etc/pam.d/* 格式
        type control module-path arguments
    [root@centos7-1 ~]#cat /etc/pam.d/login 
    #%PAM-1.0
    auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
    auth       substack     system-auth
    auth       include      postlogin
    account    required     pam_nologin.so
    account    include      system-auth
    password   include      system-auth
    # pam_selinux.so close should be the first session rule
    session    required     pam_selinux.so close
    session    required     pam_loginuid.so
    session    optional     pam_console.so
    
    • 说明:
        服务名(application)
          telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务
        模块类型(module-type)
        control PAM库该如何处理与该服务相关的PAM模块的成功或失败情况
        module-path 用来指明本模块对应的程序文件的路径名
        Arguments 用来传递给该模块的参数

    /etc/pam.d/* 格式

    • 模块类型(module-type)
        Auth 账号的认证和授权
        Account 与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以有多少个用户),限制用户的位置(例如:root用户只能从控制台登录)
        Password 用户修改密码时密码复杂度检查机制等功能
        Session 用户获取到服务之前或使用服务完成之后需要进行一些附加的操作,如:记录打开/关闭数据的信息,监视目录等
        -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
    • Control:
      PAM库如何处理与该服务相关的PAM模块成功或失败情况
      两种方式实现:简单和复杂
      (1)简单方式实现:一个关健词实现
        required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕再将失败结果返回给应用程序。即为必要条件
        requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
        sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件
        optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
        include: 调用其他的配置文件中定义的配置信息
      (2)复杂详细实现:使用一个或多个“status=action”
        [status1=action1 status2=action …]
          Status:检查结果的返回状态
          Action:采取行为 ok,done,die,bad,ignore,reset
        k 模块通过,继续检查
        done 模块通过,返回最后结果给应用
        bad 结果失败,继续检查
        die 结果失败,返回失败结果给应用
        ignore 结果忽略,不影响最后结果
        reset 忽略已经得到的结果
    • module-path: 模块路径
        相对路径:
          /lib64/security目录下的模块可使用相对路径
          如:pam_shells.so、pam_limits.so
        绝对路径:
      模块通过读取配置文件完成用户对系统资源的使用控制
        /etc/security/*.conf
      注意:修改PAM配置文件将马上生效
      建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误
      Arguments 用来传递给该模块的参数

    PAM文档说明

    • /user/share/doc/pam-*
    • rpm -qd pam
    • man –k pam_
    • man 模块名 如man rootok
    • 《The Linux-PAM System Administrators’ Guide》

    PAM模块

    • 模块:pam_shells
    • 功能:检查有效shell
    • 帮助用法:man pam_shells

    示例:不允许使用/bin/csh的用户本地登录

    vim /etc/pam.d/login
    添加以下内容
    auth required pam_shells.so
    vim /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /usr/bin/sh
    /usr/bin/bash
    /usr/sbin/nologin
    /bin/tcsh
    #/bin/csh
    useradd –s /bin/csh yuan
    yuan用户将不可登录
    tail /var/log/secure   查看日志
    但此时,仍然可以通过su切换到yuan用户
    因此可以在/etc/pam.d/su文件下
    vim /etc/pam.d/su
    auth required pam_shells.so
    此时,通过su也无法切换到yuan用户
    
    • 模块:pam_securetty.so
    • 功能:只允许root用户在/etc/securetty列出的安全终端上登陆
      一般情况下,禁止更改,因为telnet连接不安全。

    示例:允许root在telnet登陆

    vi /etc/pam.d/remote
    #auth required pam_securetty.so #将这一行加上注释
    或者/etc/securetty文件中加入
    pts/0,pts/1…pts/n
    
    • 模块:pam_nologin.so

    • 功能:
        如果/etc/nologin文件存在,将导致非root用户不能登陆
        如果用户shell是/sbin/nologin 时,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
        注意:/etc/nologin文件默认不存在,需要手动创建

    • 模块:pam_limits.so

    • 功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

    • 修改限制的实现方式:
        (1) ulimit命令,立即生效,但无法保存
          -n 最多的打开的文件描述符个数
          -u 最大用户进程数
          -S 使用 soft(软)资源限制
          -H 使用 hard(硬)资源限制
        (2) 配置文件:/etc/security/limits.conf, /etc/security/limits.d/*.conf

    • 配置文件:每行一个定义;
      <domain> <type> <item> <value>
      应用于哪些对象
        Username 单个用户
        @group 组内所有用户
        * 所有用户
      限制的类型
        Soft 软限制,普通用户自己可以修改
        Hard 硬限制,由root用户设定,且通过kernel强制生效
        - 二者同时限定
      限制的资源
        nofile 所能够同时打开的最大文件数量,默认为1024
        nproc 所能够同时运行的进程的最大数量,默认为1024
      指定具体值

    示例:
    限制用户最多打开的文件数和运行进程数

    vim /etc/pam.d/system-auth
    session required pam_limits.so
    vim /etc/security/limits.conf
    apache – nofile 10240 用户apache可打开10240个文件
    student hard nproc 20 用户student不能运行超过20个进程
    
    展开全文
  • linux 查看进程的程序绝对路径

    千次阅读 2018-06-25 15:10:11
    简介 ps和htop等工具只能查看到程序的相对路径,通过下面的/proc/pid/exe可以看到绝对路径,因为exe是程序的一个软连接 ps -ef |grep client | awk '{print $2}' ls -l /proc/1046/exe ...

    简介

    ps和htop等工具只能查看到程序的相对路径,通过下面的/proc/pid/exe可以看到绝对路径,因为exe是程序的一个软连接

    ps -ef |grep client | awk '{print $2}'
    ls -l /proc/1046/exe

    这里写图片描述

    展开全文
  • Linux安装nginx,并配置ssl证书

    千次阅读 2020-06-09 10:32:11
    上面./configure的正确的命令如下: ./configure --prefix=/usr/local/nginx --with-openssl=/usr/local/openssl-1.0.1j --with-http_ssl_module 如果pcre和zlib出现类似的问题,指定路径就可。 --with-pcre=/usr/...

    一:先安装依赖

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
    

    二:nginx的下载,解压并安装。

    //进入目录
    cd /usr/local
    
    //创建目录
    mkdir nginx
    
    //进入目录
    cd nginx
    
    //下载nginx tar包
    wget http://nginx.org/download/nginx-1.13.7.tar.gz
    
    //解压nginx tar包
    tar -xvf nginx-1.13.7.tar.gz
    
    //进入目录
    cd /usr/local/nginx
    
    //进入nginx安装目录
    cd nginx-1.13.7
    
    //执行命令
    ./configure
    
    //执行命令
    make
    
    //执行命令
    make install
    
    //启动nginx
    nginx
    
    //如果失败,使用这个命令试一下
    ./nginx
    

    最后浏览器直接访问IP ,会跳转到nginx的welcome页面。
    nginx 安装完成。

    三:配置nginx.conf

    vi /usr/local/nginx/conf/nginx.conf
    

    参考:
    配置文件修改参考

    ssl证书配置

    其他参考(简书):

     # HTTPS server
        server {
    
          listen 443;
          server_name www.test.com; #自己的域名
          ssl on;
          root html;
          index index.html index.htm;
          #这里的.pem/.key文件替换成自己对应的文件名
          ssl_certificate   cert/xxxxxx.pem;
          ssl_certificate_key  cert/xxxxx.key;
          ssl_session_timeout 5m;
          ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
          ssl_prefer_server_ciphers on;
          location / {
              #代理的目标地址
              proxy_pass http://127.0.0.1:8000;
              }
        }
    

    四:重启nginx

    //进入目录
    cd /usr/local/nginx/sbin
    
    //nginx 重启
    nginx -s reload
    
    //如果报错,使用这个命令试一下
    ./nginx -s reload
    

    五:可能报错
    1.
    nginx: [emerg] unknown directive “ssl” in /usr/local/nginx/conf/ngi…

    百度可得:nginx没有装-----ssl模块;
    上面有一步,命令其实有问题,但是为了给新手锻炼自己的机会所以埋了一个坑,我也是踩着大佬留的坑走过来的,所以我也就基本上顺从现在互联网的浪潮,该有的坑还是留在那里。

    解决方法
    1.在nginx的安装目录执行

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    

    2.在nginx安装目录执行

    make
    

    其实在源码编译安装nginx的时候就已经出现这个问题了:
    / + OpenSSL library is not used

    错误原因: 在安装nginx的时候没有指定openssl的解压路径。
    上面./configure的正确的命令如下:

    ./configure --prefix=/usr/local/nginx  --with-openssl=/usr/local/openssl-1.0.1j --with-http_ssl_module
    

    如果pcre和zlib出现类似的问题,指定路径就可。

    --with-pcre=/usr/local/pcre-7.7 --with-zlib=/usr/local/zlib-1.2.3 --with-http_stub_status_module
    

    参考:
    https://blog.csdn.net/weiyangdong/article/details/80008543
    https://blog.csdn.net/CRR_0312/article/details/88077316
    https://blog.csdn.net/t8116189520/article/details/81909574

    展开全文
  • 一 .前言 随着SSL证书时代的到来,https逐渐...linux服务器上如果是使用apache也可以通过宝塔来一键安装letsencrypt。但是目前因为很多项目中都会使用nginx作为前端服务器,而宝塔没有提供nginx的一键安装letsencr...
  • LINUX下安装SSL证书

    千次阅读 2019-07-04 13:45:27
    进入jdk路径下\jre\lib\security 执行命令keytool -import -alias pm -keystore cacerts -file /usr/local/soft/pm.cer 其中-alias 后面的pm为别名,-file后面的为证书路径 输入密码 默认为changeit 出现是否...
  • Linux 安装nginx 并配置SSL详细步骤

    千次阅读 2020-08-18 19:34:54
    查看nginx版本 /usr/local/nginx/sbin/nginx -v 2.6:nginx常见命令 /usr/local/nginx/sbin/nginx 启动 /usr/local/nginx/sbin/nginx -s stop 关闭 /usr/local/nginx/sbin/nginx -s reload 重启 3.SSL配置 3.1:...
  • 1.首先要去服务器上面申请证书,申请证书步骤我就不多说了,必须有域名才能申请哦,我这里使用的是腾讯云服务器,下载证书 ...https://www.runoob.com/linux/nginx-install-setup.html  
  • linux下的apache部署ssl证书

    千次阅读 2018-10-29 14:17:11
    一、安装准备 1.安装Openssl 要使Apache支持SSL,需要首先安装Openssl支持。推荐下载安装openssl-0.9.8k.tar.gz 下载Openssl:http://www.openssl.org/source/ tar -zxf openssl-0.9.8k.tar...
  • MySQL5.7 linux系统配置sslssl方式登录

    千次阅读 2018-05-30 17:52:35
    MySQL5.7配置ssl在my.cnf配置文件中的[mysqld]选项下增加[mysqld]ssl-ca=/var/lib/mysql/data/ca.pemssl-cert=/var/lib/mysql/data/server-cert.pemssl-key=/var/lib/mysql/data/server-key.pem创建用户必须使用ssl...
  • Linux上Nginx中开启SSL模块,配置Https访问方式一、Nginx简介二、主题业务背景三、Nginx实现Https方式前期准备SSL证书申请Nginx需要开启SSL模块四、Nginx中配置Https配置前介绍nginx.conf配置详情 一、Nginx简介 1....
  • Linux PHP 网站 SSL 证书存放位置

    千次阅读 2019-07-17 16:30:01
    linux 查询命令为: find / -name *.key find / -name *.pem 主要是这两个命令全局搜索 我这台电脑上最后 通过比对,找到的确定位置为 /etc/httpd/cert 记录在此! ...
  • 指定密钥路径和输入口令之后,即在/home/msa/.ssh/中生成公钥和私钥:id_rsa id_rsa.pub。 id_rsa 是客服端要用的证书4)cat id_rsa.pub >> authorized_keys至于为什么要生成这个文件,因为sshd_config里
  • openssl version -a查看ssl是否安装和安装路径 首先,了解一下证书的类型。 SSL证书包括:  1,CA证书,也叫根证书或者中间级证书。如果是单向https认证的话,该证书是可选的。不安装CA证书的话,浏览器默认...
  • 如何找到的路径SSL证书文件?

    万次阅读 2015-12-03 23:34:54
    我想Python的请求得到网页中的内容(比如,我可以看到在浏览器页面,并且我可以“查看证书”。 所以现在我想获得与请求的网页,所以我做的: import requests requests.get(' CodeGo.net 但后来我得到一个...
  • linux下nginx配置SSL证书

    万次阅读 2018-01-20 14:02:30
    1.新建证书存放路径(/usr/local/nginx目录下) mkdir ssl 2.生成一个RSA私钥(/usr/local/nginx/ssl目录下) openssl genrsa -des3 -out yangwanli.key 1024 --其中 yangwanli可以自定义 输入密码后,再次重复输入确认...
  • Linux下Tomcat部署并启用SSL

    千次阅读 2019-07-29 16:09:26
    CentOS Linux release 7.6.1810 (Core) # uname -r 3.10.0-957.el7.x86_64 //关闭SELinux //关闭firewall或按需打开对应端口 //下载部署Tomcat Java //Java版本 jdk-11.0.4_linux-x64_bin # wget http...
  • Linux下OpenSSL自签ssl证书

    千次阅读 多人点赞 2020-07-27 15:47:02
    Linux下OpenSSL自签ssl证书,颁发CA证书 Chrome您的连接不是私密连接解决办法 配置https域名 因内网需要用到的证书,所以使用了自签ssl
  • 无宝塔 申请证书(我这里举阿里云申请到的例子) 配置文件的位置 里面有个证书路径,换掉就行 有宝塔 有宝塔就简单很多了,直接申请,部署
  • Linux 免费配置 SSL 证书,自动续期

    千次阅读 2019-08-05 16:53:09
    1.Linux服务器一台 2.可用域名并解析 二、下载cerbot-auto wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 三、nginx为申请ssl证书准备配置,记得重启 server { listen 80; server_name ...
  • linux服务器下解决SSL证书不受信的问题linux服务器下解决SSL证书不受信的问题安装SSL证书安装到jdk证书库第二种代码层面忽略证书信任问题。 你好! 这是你的第一篇博文,以后就在这里和大家交流和学习喽。 linux...
  • 一、生成服务器证书 ... yum install -y openssl mod_ssl  2、生成服务器私匙,生成server.key文件  openssl genrsa -des3 -out server.key 1024  3、填写证书信息,生成server.csr文件  
  • linux-证书】linux生成自验证ssl证书

    千次阅读 2019-04-26 11:33:33
    1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 2.去除key文件口令的命令: openssl rsa -in server.key ...openssl req -new -key server.key -out server.csr -config /etc/ssl/...
  • linux 安装nginx 缺少ssl模块解决办法

    千次阅读 2019-11-26 14:24:07
    nginx 需要ssl模块重新编译安装, 使用命令: ./configure --prefix=/usr/local/localApp/env/nginx-1.6.1/ --with-http_stub_status_module --with-http_ssl_module 发现编辑报错,找不到ssl模块,需要手动指定...
  • 2、TLS/SSL协议的引入及其通信过程 3、CA、数字签名的引入 4、一个安全的数据通信交换过程 5、openssl工具的使用 6、自制私有根CA过程 一、通信加密类型及算法  数据加密
  • Linux+Nginx下SSL证书安装

    千次阅读 2017-09-30 14:48:00
    一.Nginx安装SSL证书需要两个配置文件 1_root_bundle.crt、 2_domainname.com.key。 注:这三个证书文件都在文件夹for Nginx.zip中,例:1_root_bundle.crt是根证书链(公钥),2_ domainname.com.key为私钥。 (其中:...
  • linux下weblogic配置ssl访问

    千次阅读 2019-05-14 16:35:01
    下面我来为大家介绍具体操作方法。 1、首先登陆到我们应用的实例中,我的实例路径是 [weblogic@zhanglw-a domain8001]$ pwd /picclife/wlserver122/user_projects/domains/domain8001 ...在此路径下建...
  • linux ssh和ssl升级

    千次阅读 2018-08-07 15:58:07
    4. 配置库文件搜索路径 mv /usr/bin/openssl /usr/bin/openssl.OFF mv /usr/include/openssl /usr/include/openssl.OFF ln -s /usr/local/ssl/bin/openssl /usr/bin ln -s /usr/local/ssl/include/...
  • 实操:阿里云CentOS 7.4,Nginx版 获取SSL证书 域名控制台-&gt;基本信息-&gt;免费开启SSL证书-&gt;单域名免费证书 ...上传SSL证书 把.crt和.key文件上传至...3. ssl_certificate:证书.crt路径 4. ssl_c...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,985
精华内容 25,994
关键字:

linux查看ssl路径

linux 订阅