油气液体化工品物流监控企业接入规范Word格式.docx
《油气液体化工品物流监控企业接入规范Word格式.docx》由会员分享,可在线阅读,更多相关《油气液体化工品物流监控企业接入规范Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
4.海关系统将生成的业务回执签名、压缩、通过IPSECVPN安全通道,写入企业端回执信息接收队列中;
5.企业系统从企业队列中读取回执,解压、验签,进行进一步的业务处理。
二、技术要求
采用该方式的企业,需进行如下准备工作:
(一)实现与海关的VPN联网
企业准备一条具有固定公网IP地址的互联网接入线路,配备VPN接入设备。
相关配置要求见《采用IPSecVPN技术与南京海关联网的设备配置规范》的规范配置实施与海关网络的互联。
南京海关技术处提供相关技术支持,联系方式为南京海关技术热线:
。
(二)购置与本系统配套的CA认证卡(USBKey)
该Key的购置方法与网站程序录入方式相同,但企业需要基于该Key进行编程,实现报文发送接收的加验签。
CA公司提供报文签名、验签控件等相应编程接口,各企业可在开发中使用,相关的技术支持由CA公司承担。
报文数字签名要求:
与海关交换的报文和回执均须进行数字签名,可采用省CA公司或联通CA公司的CA体系,由用户自行选择。
企业用户需基于USBKey对向海关申报的XML报文内容进行加签,并对海关回执报文验签。
加签验签的标准以海关总署2008年81号公告中《中国海关进出境水运、空运货物舱单报文格式制定说明》有关报文数字签名的要求为准。
经与两CA公司协商,两家公司均已开发出符合上述规范的报文加签验签的标准接口,企业用户如开发程序需要,可与相关CA公司联系,有关CA公司提供相应开发接口程序及技术支持
(三)生成符合标准的报文
企业按照南京海关报文规范,从自身业务系统中抽取形成标准报文。
具体报文规范及格式要求见南京海关相关公告。
(四)开发报文传输软件
企业需开发报文传输系统,按照海关确定的标准接口,把海关规定申报的报文数字签名后发送给海关,同时接受海关回执报文。
报文传输采用MSMQ3.0软件,CA体系支持江苏CA和联通CA两类。
1.具体传输方式
企业端需要建立2个MQ队列。
其一为接收海关业务回执的队列,此队列为事务性队列。
企业需要提供相关MQ地址信息(格式
FORMATNAME:
DIRECT=TCP:
192.168.170.2\private$\client_sample_receipt,其中“192.168.170.2”应填海关在VPN网上分配给企业MQ服务器的地址)。
其二为接收报文是否验签成功的传输回执接受队列,此队列为非事务性队列。
企业需要提供相关MQ地址等信息(格式FORMATNAME:
192.168.170.2\private$\client_sample_response,其中“192.168.170.2”应填海关在VPN网上分配给企业MQ服务器的地址),海关端程序将向两个队列中写入相应回执信息。
企业端程序负责从相应队列中读取回执,如企业需要可以进行相关报文存证,企业要对队列进行实时监控,保持MQ报文传输服务器的稳定性和消息队列的畅通。
针对海运部分系统及空运部分系统,海关分别提供2个报文接收队列,业务报文接收队列为MSMQ事务性队列,传输回执接受队列为非事物性队列。
业务报文接收队列用于接收企业申报的业务报文数据,传输回执接收队列用于接收海关业务回执报文是否验签成功的信息。
2.目前海关端接受队列地址。
●海运系统报文接受队列
●
业务报文接收队列(事务性队列)
192.168.2.126\private$\east_sample_message_qy
传输回执接受队列(非事务性队列)
192.168.2.126\private$\east_sample_response
●空运系统报文接受队列
192.168.2.127\private$\east_sample_message_qy
192.168.2.127\private$\east_sample_response
3.企业报文传输分两个阶段:
企业申报报文发送阶段及企业回执报文接受阶段。
具体流程图如下
企业申报报文发送阶段,主要步骤为6步:
(1)企业应用系统生成符合海关规范的申报报文,
(2)调用相应的CA控件队报文进行数字签名
(3)将数字签名后的报文进行ZIP压缩
(4)将压缩后的数据内存流转换成字符数组,并作base64编码。
(5)将Base64编码后的报文数据写入海关企业报文接受队列中。
注意:
写入规范为将申报报文的文件名赋值给消息的标签(Label)属性,报文内容赋值给消息的报文体(Body)属性。
企业传输回执接受队列地址赋值给消息的回执报文队列(ResponseQueue)属性。
(6)从企业传输回执接受队列中收取海关传输回执消息。
回执消息的标签(Label)属性为回执报文的文件名(即企业申报报文的文件名),回执消息的报文体(Body)属性为回执报文的内容。
回执报文的内容为布尔值“TRUE”或“FALSE”,“TRUE”表示该企业申报报文海关验证通过,“FALSE”表示该企业申报报文海关验证未通过。
企业回执报文接收阶段,主要步骤也分为6步:
(1)企业应用系统将接收海关业务回执的队列中的回执报文读出。
报文内容为回执消息报文体(Body)属性中的内容,报文名为回执消息的标签(Label)属性的内容。
海关传输回执接受队列地址为回执消息的回执报文队列(ResponseQueue)属性的内容。
(2)将报文内容(BASE64编码)转化为字节数组。
(3)将字节数组解压缩转换成报文原文。
(4)调用相应CA控件验证海关数字签名。
(5)生成传输回执消息发送至海关传输回执接受队列。
同样,传输回执消息的标签(Label)属性为报文的文件名(即海关回执报文的文件名),传输回执消息的报文体(Body)属性为回执报文的内容。
回执报文的内容为布尔值“TRUE”或“FALSE”,“TURE”表示该海关回执报文企业验证通过,“FALSE”表示该海关回执报文企业验证未通过。
(6)企业应用系统使用海关回执报文。
4.开发报文传输程序可参考本文第三部分“报文传输软件参考程序片断”。
三、报文传输软件参考程序片断
(一)签名
publicstaticstringSignXml(stringxmlContent)
{
if(provider.ToLower()=="
uni"
)
if(signaturer.ToLower()=="
server"
SignatureInterface.SignatureInterfacePortTypeClientsig=newMsgTrnsCommon.SignatureInterface.SignatureInterfacePortTypeClient();
returnsig.getXMLSignature(ConfigurationManager.AppSettings["
SystemId"
],xmlContent);
}
else
returnUniClient.XMLSignMQ(xmlContent);
elseif(provider.ToLower()=="
jsca"
JsServer.SetServer(ConfigurationManager.AppSettings["
JsServer"
],int.Parse(ConfigurationManager.AppSettings["
SignPort"
]));
returnJsServer.gtSignXmlString(xmlContent,ConfigurationManager.AppSettings["
JsCert"
]);
returnJsClient.gtSignXmlString(xmlContent);
returnstring.Empty;
(二)验签
(三)
publicstaticstringVerifySign(stringxmlContent)
if(verifier.ToLower()=="
VerifySignature.VerifySignatureInterfacePortTypeClientver=newMsgTrnsCommon.VerifySignature.VerifySignatureInterfacePortTypeClient();
returnver.xmlVerifySignature(xmlContent);
returnUniClient.XMLVerifyMQSign(xmlContent);
],int.Parse(ConfigurationManager.AppSettings["
ValiPort"
returnJsServer.gtVerifyXmlString(xmlContent);
UTF8Encodingut=newUTF8Encoding();
Byte[]encodedBytes=ut.GetBytes(xmlContent);
StringdecodedString=ut.GetString(encodedBytes);
returnJsClient.gtVerifyXmlString(decodedString);
(四)压缩
(五)
publicstaticStreamCompress(Streams)
s.Seek(0,SeekOrigin.Begin);
MemoryStreamcs=newMemoryStream();
try
DeflaterOutputStreamcs1=ne