For general-purpose crosslinking when the protein has not been genetically modified with an affinity tag, a crosslinker that reacts with amino groups (lysine and the N-terminus) will almost always work, since there are usually some surface-expsoed lysine residues, in addition to the N-terminus. The disadvantage is that there is no control over which lysine side chains react with the crosslinker. If crosslinking interferes with the binding of the substrate to the active site, the activity of the enzyme will be lost.
Some proteins may have one or more surface-exposed cysteine side chains. In those cases, crosslinkers that react specifically with thiol groups can be used. If genetic modification is an option, the protein can be modified to have just one surface-exposed Cys residue that is far from the active site.
If an affinity tag can be incorporated into the protein, such as biotin or hisn tag, the tag can be used to immobilize the protein to a suitable surface.
The choice of a crosslinker depends on the behavioure of a protein.you can use the gulterdehyde or DTSSP but before using any crosslinker you have to standarise the protocol
you can use different concentrations of a protein and crosslinker at different intervals.
I have done crosslinking experiments if you need further help please let me know