阿里库奇 发布的文章

下列命令可实现阻止本服务器向外网服务器通过25端口发送电子邮件,但为本地网络 127.0.0.1 传送电子邮件不受影响。

IPv4 环境可执行:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp -d 127.0.0.1 --dport=25 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport=25 -j REJECT
firewall-cmd --reload

IPv6 环境可执行:

firewall-cmd --permanent --direct --add-rule ipv6 filter OUTPUT 0 -p tcp -m tcp -d ::1 --dport=25 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv6 filter OUTPUT 1 -p tcp -m tcp --dport=25 -j REJECT
firewall-cmd --reload

在使用Datatables插件创建可进行自定义灵活分类查询的表格时,需要关闭自带的搜索框、分页栏等,可以参考官方文档做出如下设置:

例我们有一个下列表格实例:

<table class="all-ssl-table">
<tbody>
  <tr>
     <td>TrustOcean DV SSL Certificate</td>
     <td>$5.15</td>
     <td>$9.15</td>
  </tr>
  <tr>
     <td>TrustOcean Wildcard SSL Certificate</td>
     <td>$35.15</td>
     <td>$59.15</td>
  </tr>
</tbody>
</table>

使用 Datatables 进行配置:

var table = $('.all-ssl-table').DataTable({
    "searching" : false, //去掉搜索框方法一
    "bFilter": false,   //去掉搜索框方法二
    "bSort": false,  //禁止排序
    "paging": false,   //禁止分页
    "info": false   //去掉底部文字
});

又因我们项目需要,需要启用搜索和Filter功能,且不需要展示搜索框,因此我们做出了如下改动:

table = $('.all-ssl-table').DataTable({
    "searching" : true, //开发搜索
    "bFilter": true,   //开启规则搜索
    "bSort": false,  //禁止排序
    "paging": false,   //禁止分页
    "info": false   //去掉底部文字
});

然后我们增加了一段 css 代码来隐藏搜索框:

<style type="text/css">
    .dataTables_filter{
        display: none;
    }
</style>

如果想查询更多关于 Datatables 的 API 文档,您可以参考官方文档 https://datatables.net/manual/api

在Bootstrap框架中使用Radio选择项对Datatable表格条目进行筛选过程中,发现在元素上使用默认的js方法监听onclick事件无效,经过网络查询,自 iChecker 官方文档, 可以使用 ifChecked 事件类型并配合Jquery进行监听。

例有如下会被iChecker实例化的元素:

<input type="radio" name="SSLType">

即可使用 ifChecked 进行监听:

$('input').on('ifChecked', function(event){
    alert("触发的事件类型为:"+ event.type)
});

详细可参考官方文档: http://icheck.fronteed.com/#callbacks

私钥转换

如果您想了解 PKCS#1 格式私钥和 PKCS#8 私钥间的区别,您可以访问我们之前发布的文档《私钥头 "BEGIN RSA PRIVATE KEY" 和 "BEGIN PRIVATE KEY"的区别》

我们需要借助Openssl命令行工具,完成下列互转:

PKCS8格式私钥再转换为PKCS1格式

openssl rsa -in pkcs8.pem -out pkcs1.pem

PKCS1私钥转换为PKCS8

openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem

公钥转换

从pkcs1私钥中生成pkcs8公钥

openssl rsa -in private.pem -pubout -out public.pem

从pkcs8私钥中生成pkcs8公钥

openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem

pkcs8公钥转pkcs1公钥

openssl rsa -pubin -in public.pem -RSAPublicKey_out

pkcs1公钥转换为pkcs8公钥

openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout

此文档整理来自《openssl RSA密钥格式PKCS1和PKCS8相互转换》

未加密的私钥以 PKCS#8 格式文本存储, 将包含以下头部和尾部标签:

-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----

里面的 BASE64 的编码的 DER 信息包含以下信息结构:

PrivateKeyInfo ::= SEQUENCE {
  version         Version,
  algorithm       AlgorithmIdentifier,
  PrivateKey      BIT STRING
}

AlgorithmIdentifier ::= SEQUENCE {
  algorithm       OBJECT IDENTIFIER,
  parameters      ANY DEFINED BY algorithm OPTIONAL
}

- 阅读剩余部分 -