Skip to Content

EDI - AS2 服务器部署

AS2 服务器

可以根据官方文档教程安装环境并启动项目
该项目是基于 django 的,所以使用方式和 django 基本一致


关于 AS2 的介绍

AS2是一种通过互联网安全地传输 EDI(电子数据交换)或其他业务数据的通信协议。

大致流程为:

  1. 建立连接
    1. 需要交换信息,如 AS2 ID、URL、证书、公钥等。
    2. 需要提前配置好信息,这样 AS2 服务器才能准确验证身份并接收。
  2. 发送数据
    1. 发送方服务器准备数据
      1. 打包
      2. 签名
      3. 加密
    2. 通过 HTTP(S) 发送到接收方的 AS2 URL
  3. 接收数据
    1. 接收方收到后
      1. 解密
      2. 验证签名
      3. 解包文件
    2. 传入系统
  4. 返回 MDN(消息处理通知)
    1. 接收方会返回 MDN 给发送方,表示数据:
      1. 成功收到
      2. 验证通过
      3. 出错
  5. ​发送方验证 MDN​​
    1. 发送方解析 MDN,确认此次通信成功。如果没有成功,可自动重试或告警

部署 AS2

安装环​境

$ pip install django-pyas2
$ django-admin startproject django_pyas2 .

配置项目
修改 setting.py 文件
INSTALLED_APPS = (
    ...
    'pyas2',
)

配置 urls.py

from django.urls import include
urlpatterns = [
    path('pyas2/', include('pyas2.urls')),
    ...
]
进行迁移
python manage.py migrate

创建用户
python manage.py migrate
启动服务器 (生产环境可以和普通 django 项目一样配置 nginx 反向代理和uwsgi)
python manage.py runserver

配置 AS2

通过 http://localhost:8000/admin 进入后台

AS2 通信需要验证身份,所以我们应该在服务器中提前配置好

  1. 我们自己的信息(as2-id、私钥、证书)
  2. 客户信息(as2-id、URL、公钥、证书)


配置公钥

配置私钥




配置客户

配置组织(organization) 

配置我们自己的信息

发送文件

手工发送

自动发送

参考django-pyas2 扩展实现监控功能扩展

运行扩展

python manage.py filewatcher

可以封装成 systemctl 指令

systemctl start django_pyas2-extend-filewatcher.service

检查结果

in Odoo
django-pyas2 监听文件夹自动发送 EDI 文件